Ich habe erklärt, wie man unittest in Unittest in Python ausführen (für Anfänger) verwendet. Während der Verwendung wollte ich mehrere Tests gleichzeitig testen und sie organisieren. Mit anderen Worten, wie man TestSuite benutzt. Offizielle Dokumentation und "[[Python] Zwei Möglichkeiten, eine Testsuite mit dem unittest-Modul zu implementieren](http: //www.yoheim. net / blog.php? q = 20160903) ”wurde als Referenz verwendet.
.
├─sample_a.py
└─tests
├─__init__.py
├─test_samplea.py
├─test_sampleb.py
├─samplec.py
└─sample_suite.py
sample_a.py
class SampleA():
def hello(self):
print('Hello, I am sample of a!')
test_samplea.py
import unittest
from sample_a import SampleA
class TestSampleA(unittest.TestCase):
def test_a1(self):
print('Test sample A1')
a = SampleA()
a.hello()
def test_a2(self):
print('Test sample A2')
def a3(self):
print('Test sample A3')
test_sampleb.py
import unittest
class TestSampleB(unittest.TestCase):
def test_b1(self):
print('Test sample B1')
def test_b2(self):
print('Test sample B2')
def b3(self):
print('Test sample B3')
samplec.py
import unittest
class SampleC(unittest.TestCase):
def test_c1(self):
print('Test sample C1')
def test_c2(self):
print('Test sample C2')
def c3(self):
print('Test sample C3')
sample_suite.py
import unittest
from . import test_samplea
from . import test_sampleb
from . import samplec
def suite():
suite = unittest.TestSuite()
suite.addTest(test_samplea.TestSampleA('test_a1'))
suite.addTest(test_samplea.TestSampleA('a3'))
suite.addTest(unittest.makeSuite(test_sampleb.TestSampleB))
suite.addTest(samplec.SampleC('test_c1'))
return suite
if __name__ == '__main__':
runner = unittest.TextTestRunner()
test_suite = suite()
runner.run(test_suite)
python -m unittest tests.test_samplea Das Ausführungsergebnis ist wie folgt.
Test sample A1
Hello, I am sample of a!
.Test sample A2
.
----------------------------------------------------------------------
Ran 2 tests in 0.003s
OK
An der Ausgabe können Sie erkennen, dass die Testmethoden test_a1 und test_a2 ausgeführt werden. Mit der a3-Methode wurden keine Tests durchgeführt.
python -m unittest Das Ausführungsergebnis ist wie folgt.
Test sample A1
Hello, I am sample of a!
.Test sample A2
.Test sample B1
.Test sample B2
.
----------------------------------------------------------------------
Ran 4 tests in 0.006s
OK
An den Testergebnissen können Sie erkennen, dass die Tests für test_samplea.py und test_sampleb.py ausgeführt werden. Der Test für samplec.py wurde nicht ausgeführt. In der Datei, die mit test beginnt, werden die Tests der Methoden, die mit test beginnen, zusammen ausgeführt.
`__init __. Py```, um die Tests im Testverzeichnis zu erkennen. Selbst wenn in Python3
`__init __. Py``` nicht vorhanden ist, wird es als Paket erkannt, sodass Sie es möglicherweise nicht erstellen. Bitte beachten Sie, dass Sie es benötigen, wenn Sie die Testerkennung verwenden.python -m tests.sample_suite
Test sample A1
Hello, I am sample of a!
.Test sample A3
.Test sample B1
.Test sample B2
.Test sample C1
.
----------------------------------------------------------------------
Ran 5 tests in 0.006s
OK
Der von addTest hinzugefügte Test wird ausgeführt. Testmethoden (a3), die nicht mit Test beginnen, und Testdateien (samplec.py), die nicht mit Test beginnen, werden ebenfalls ausgeführt. Um einen Test hinzuzufügen, müssen Sie jede Methode hinzufügen suite.addTest(test_samplea.TestSampleA('test_a1')) Oder Ergänzung nach Klasse suite.addTest(unittest.makeSuite(test_sampleb.TestSampleB)) es gibt.
Die Testerkennungsmethode ist sehr praktisch, da Sie den Test ausführen können, ohne etwas festzulegen. Da jedoch die Anzahl der Tests zunimmt und die Verarbeitung von Tests, deren Verarbeitung lange dauert, hinzugefügt wird, möchte ich die Tests ausschließen. Daher habe ich untersucht, wie nur die von mir festgelegten Tests ausgeführt werden können. Ich konnte keinen Versuch und Irrtum machen und dachte, dass es ein wenig einfacher implementiert und mit Python-M Unit Test ausgeführt werden könnte. Nicht gut, da die auszuführende Schnittstelle inkonsistent ist. .. .. Bitte lassen Sie mich wissen, ob es einen einfacheren Weg gibt, dies zu implementieren.
Recommended Posts