Wenn unittest mehrere Tests durchführt, wird setUp bei jedem Aufruf des Tests ausgeführt. Wenn der setUp-Prozess jedoch sehr umfangreich ist, dauert die Ausführung zu lange, da er mehrmals aufgerufen wird.
Wenn Sie setUp also nur einmal aufrufen möchten, wie sollten Sie es schreiben? Es wird gelöst, indem setUpClass definiert wird, anstatt setUp zu verwenden.
Der folgende Code ist als spezifisches Beispiel angegeben.
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)
Dieser Code verfügt über eine Methode, die ausgeführt wird, wenn "setUp" und "setUpClass" initialisiert werden. Dies sind die Methoden, die jeweils von unittest bereitgestellt werden. Außerdem ist die hier beschriebene Methode so definiert, dass bei jeder Ausführung eine Zeichenfolge ausgegeben wird. Außerdem sind drei Tests definiert.
Lassen Sie uns nun sehen, ob sich die Ausgabezeichenfolge wie von diesem Code erwartet verhält. Erwarten Sie, dass die Zeichenfolge in "setUp" mehrmals ausgegeben wird und dass die Zeichenfolge in "setUpClass" einmal ausgegeben wird.
Hier ist das Ergebnis der tatsächlichen Ausführung.
$ python3 -m unittest test_setup.py
Called `setUpClass`.
Called `setUp`.
.Called `setUp`.
.Called `setUp`.
.
----------------------------------------------------------------------
Ran 3 tests in 0.001s
OK
Es wurde bestätigt, dass es wie erwartet funktionierte.
Qiita: Python-Unit-Test-Vorlage stackoverflow: Run setUp only once
Recommended Posts