Maison > développement back-end > Tutoriel Python > notes d'étude python - test unitaire, UnitTest

notes d'étude python - test unitaire, UnitTest

黄舟
Libérer: 2017-01-17 14:25:37
original
1248 Les gens l'ont consulté

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()
Copier après la connexion

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()
Copier après la connexion

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) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal