python inclut unittest dans le module standard, mais je ne savais pas comment l'utiliser tout de suite, donc je garderai le modèle en tant que mémorandum afin de pouvoir le copier et le coller dans d'autres projets.
*Remarques
Depuis python2.7, unittest peut utiliser setUpClass et tearDownClass, qui sont exécutés lorsque la classe de test est initialisée. Pour python2.6 et inférieur, vous pouvez utiliser ces méthodes en important un module appelé unittest2.
point
# -*- coding: utf-8 -*-
import os, sys, unittest
class Sample():
"""Classe à tester"""
#Méthode à tester
def return_hoge(self):
return 'hoge'
#Méthode à tester
def return_poyo(self):
return 'poyo'
class SampleTest(unittest.TestCase):
"""Une classe de test qui teste une classe"""
CLS_VAL = 'none'
#Appelé une seule fois lorsque la classe de test est initialisée(python2.7 ou plus)
@classmethod
def setUpClass(cls):
if sys.flags.debug: print('> setUpClass method is called.')
#Exécuter des méthodes de traitement lourdes pour se préparer aux tests
cls.CLS_VAL = '> setUpClass : initialized!'
if sys.flags.debug: print(cls.CLS_VAL)
#Appelé une seule fois lorsque la classe de test est libérée(python2.7 ou plus)
@classmethod
def tearDownClass(cls):
if sys.flags.debug: print('> tearDownClass method is called.')
#Libérez l'objet préparé par setUpClass
cls.CLS_VAL = '> tearDownClass : released!'
if sys.flags.debug: print(cls.CLS_VAL)
#Appelé chaque fois que vous exécutez une méthode de test
def setUp(self):
if sys.flags.debug: print(os.linesep + '> setUp method is called.')
#Effectuer un processus léger pour préparer le test
self.smpl = Sample()
#Appelé après chaque exécution de méthode de test
def tearDown(self):
if sys.flags.debug: print(os.linesep + '> tearDown method is called.')
#Libérez l'objet préparé par setUp
def test_hoge(self):
expected = 'hoge'
actual = self.smpl.return_hoge()
self.assertEqual(expected, actual)
def test_poyo(self):
expected = 'poyo'
actual = self.smpl.return_hoge() #Erreur commune
self.assertEqual(expected, actual)
if __name__ == '__main__':
#Exécuter unittest
unittest.main()
Mettez l'indicateur -d sur lors de l'exécution d'un script python pour passer en mode débogage. (sys.flags.debug sera True.)
python -d /Users/you/Desktop/sample.py
> setUpClass method is called.
> setUpClass : heavy method
> setUp method is called.
> tearDown method is called.
.
> setUp method is called.
F
> tearDown method is called.
> tearDownClass method is called.
> tearDownClass : released
======================================================================
FAIL: test_poyo (__main__.SampleTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/you/Desktop/sample.py", line 54, in test_poyo
self.assertEqual(expected, actual)
AssertionError: 'poyo' != 'hoge'
----------------------------------------------------------------------
Ran 2 tests in 0.001s
FAILED (failures=1)
Sortie lorsque vous n'êtes pas en mode débogage
python /Users/you/Desktop/sample.py
.F
======================================================================
FAIL: test_poyo (__main__.SampleTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/you/Desktop/sample.py", line 54, in test_poyo
self.assertEqual(expected, actual)
AssertionError: 'poyo' != 'hoge'
----------------------------------------------------------------------
Ran 2 tests in 0.000s
FAILED (failures=1)
Appendix
Je ne pense pas qu'il soit beaucoup utilisé dans les petits scripts, mais si vous en avez besoin, il existe également une méthode d'initialisation pour chaque module telle que setUpModule.
Recommended Posts