Maison > Article > développement back-end > notes d'étude python - test unitaire, UnitTest
Le test dit unitaire est un type de test qui teste l'exactitude d'un module, d'une fonction ou d'une classe.
La méthode de développement piloté par les tests est appelée Test Driven Development. Ce modèle de développement n'est pas seulement un test, mais un moyen de décomposer les exigences et de garantir la qualité du code.
Les tests unitaires garantissent non seulement que la fonction, le module ou la classe répond à nos besoins lors des tests. En même temps, cela nous aidera également à modifier la classe ou la fonction à l'avenir. Il nous suffit de relancer le test unitaire pour nous assurer que notre modification n'affectera pas la fonction.
Bien sûr, les tests unitaires augmenteront également considérablement la quantité de code.
L'écriture de code de test unitaire nécessite l'introduction du package unittest de Python. Nous pouvons créer une nouvelle classe de test unitaire, mais cette classe doit hériter de la classe unitest.TestCase. La méthode de test dans la classe test doit commencer par test, sinon elle ne sera pas exécutée. Ensuite, nous pouvons utiliser les méthodes de unitest.TestCase. Les méthodes couramment utilisées sont :
assertEqual(self, first, second) #Juge si c'est la valeur attendue
assertTrue(bool) #Juge si c'est vrai
assertRaises(exception) #Jugez si c'est vrai ou faux. Lève une exception spécifique.
Donnons un exemple :
Nous définissons d'abord une classe personnalisée, puis nous la testons unitairement.
Dict.py
class Dict(dict): def __init__(self, **kwargs): super(Dict, self).__init__(**kwargs) def __getattr__(self, item): try: return self[item] except KeyError: raise AttributeError def __setattr__(self, key, value): self[key] = value import unittest from Dict import Dictclass DictTest(unittest.TestCase): def test_init(self): d = Dict(a=100, b=200) self.assertEqual(d.a, 100) self.assertEqual(d.b, 200) self.assertTrue(isinstance(d, dict)) def test_key(self): d = Dict() d['key'] = "300" self.assertEqual(d["key"], "300") def test_attar(self): d = Dict() d.attar = "attar" self.assertTrue("attar" in d) self.assertEqual(d.attar, "attar") def test_keyError(self): d = Dict() with self.assertRaises(KeyError): value = d["NotExisted"] def test_attarError(self): d = Dict() with self.assertRaises(AttributeError): value = d.not_existed if __name__ == '__main__': unittest.main()
Parce que nous avons défini une sous-classe de dict, nous devons tester sa clé et sa valeur en même temps ; est une classe, nous devons donc également tester ses attributs.
La sous-classe unittest.TestCase que nous avons définie doit écrire deux phrases :
if __name__ == '__main__': unittest.main()
Pour que nous puissions l'exécuter comme un fichier Python normal.
De plus, nous pouvons également exécuter plusieurs tests de la manière suivante
python -m unittest DictTest
fonctions setUp et tearDown.
Les fonctions setUp et TearDown sont deux fonctions spéciales. setUp s'exécute avant le début de tous les tests unitaires ; la fonction tearDown s'exécute après l'exécution de tous les tests unitaires. Les principaux scénarios d'application de ces deux fonctions sont : par exemple, lorsque vous devez vous connecter à une base de données, vous pouvez démarrer la connexion dans la fonction setUp et fermer la connexion dans la fonction tearDown.
Ce qui précède sont les notes d'étude Python - test unitaire, contenu UnitTest Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !