Lorsque unittest effectue plusieurs tests, setUp est exécuté à chaque fois que le test est appelé. Cependant, si le processus setUp est lourd, son exécution prendra trop de temps car il est appelé plusieurs fois.
Donc, si vous souhaitez appeler setUp une seule fois, comment devez-vous l'écrire? Il est résolu en définissant setUpClass au lieu d'utiliser setUp.
Le code suivant est donné à titre d'exemple spécifique.
test_setup.py
import unittest
class HogeTest(unittest.TestCase):
def setUp(self):
print('Called `setUp`.')
@classmethod
def setUpClass(self):
print('Called `setUpClass`.')
def test_called1(self):
self.assertTrue(True)
def test_called2(self):
self.assertTrue(True)
def test_called3(self):
self.assertTrue(True)
Ce code a une méthode qui est exécutée lorsque setUp
et setUpClass
sont initialisés. Ce sont les méthodes fournies par unittest respectivement. En outre, la méthode ici est définie pour afficher une chaîne de caractères à chaque fois qu'elle est exécutée. En outre, trois tests sont définis.
Voyons maintenant si la chaîne de sortie se comporte comme prévu par ce code.
Attendez-vous à ce que la chaîne de caractères dans setUp
soit sortie plusieurs fois, et que la chaîne de caractères dans setUpClass
soit sortie une fois.
Voici le résultat de l'exécution réelle.
$ python3 -m unittest test_setup.py
Called `setUpClass`.
Called `setUp`.
.Called `setUp`.
.Called `setUp`.
.
----------------------------------------------------------------------
Ran 3 tests in 0.001s
OK
Il a été confirmé que cela fonctionnait comme prévu.
qiita: modèle de test unitaire python stackoverflow: Run setUp only once
Recommended Posts