Programmation Python/Tests
Apparence
Tests unitaires
[modifier | modifier le wikicode]La bibliothèque unittest[1] permet d'automatiser les tests unitaires.
Syntaxe
[modifier | modifier le wikicode]La méthode assertEqual() permet de vérifier la valeur deux deux objets, généralement une constante et une variable issue du code à tester :
import unittest
x = 1
y = 1
self.assertEqual(x, y)
Méthodes de tests possibles :
- assertAlmostEqual(a, b)
- assertEqual(a, b)
- assertFalse(a)
- assertIn(a, b)
- assertIs(a, b)
- assertIsInstance(a, b)
- assertIsNone(a)
- assertIsNot(a, b)
- assertIsNotNone(a)
- assertNotAlmostEqual(a, b)
- assertNotEqual(a, b)
- assertNotEqual(a, b)
- assertNotIn(a, b)
- assertNotIsInstance(a, b)
- assertNotRegex(a, b)
- assertRaises(a)
- assertRaisesRegex(a)
- assertRegex(a, b)
- assertTrue(a)
Exécution
[modifier | modifier le wikicode]Si le test est dans le fichier TestClass dossier tests/ :
python -m unittest tests/TestClass.py
ou
python -m unittest tests.TestClass
Dans cette deuxième syntaxe, on peut aussi rajouter le nom de la méthode à tester après la classe.
Sinon, il existe plus rapide : dans PyCharm il suffit de cliquer sur le triangle vert situé dans la marge du test pour le lancer.
Exemples
[modifier | modifier le wikicode]Exemple simple
[modifier | modifier le wikicode]#!/usr/bin/env python
# coding: utf-8
import unittest
import tested_class
class TestClass(unittest.TestCase):
def test_replace(self):
test_input = 'test'
test_output = 'Test'
self.assertEqual(test_output, tested_class.replace(test_input))
if __name__ == '__main__':
unittest.main()
Pywikibot
[modifier | modifier le wikicode]Le framework Pywikipedia propose toute une série de tests basés sur unittest.
- Le télécharger sur http://tools.wmflabs.org/pywikibot/
- Conformément au manuel tests/README.rst, lancer
python pwb.py tests/api_tests.py -v
.
Tests fonctionnels
[modifier | modifier le wikicode]Il existe le framework pytest[2].