Ich mag einige umfangreichen Tests gegen ein meine Testfall (zum Beispiel ein Dokument erstellen, einige seltsamen Dinge zu debuggen mir begegnet ist ..) auszuführenWie kann ich meinen Django-Testfall mehrmals ausführen?
Meine brutale Gewalt war python manage.py test myapp
in einer Schleife zu feuern entweder mit Popen
oder os.system
, aber jetzt bin ich wieder auf reine Art und Weise? .....
def SimpleTest(unittest.TestCase):
def setUp(self):
def test_01(self):
def tearDown(self):
def suite():
suite = unittest.TestCase()
suite.add(SimpleTest("setUp"))
suite.add(SimpleTest("test_01"))
suite.add(SimpleTest("tearDown"))
return suite
def main():
for i in range(n):
suite().run("runTest")
lief ich python manage.py test myapp
und ich bekam
File "/var/lib/system-webclient/webclient/apps/myapps/tests.py", line 46, in suite
suite = unittest.TestCase()
File "/usr/lib/python2.6/unittest.py", line 216, in __init__
(self.__class__, methodName)
ValueError: no such test method in <class 'unittest.TestCase'>: runTest
ich den Fehler gegoogelt habe, aber ich noch ahnungslos (Ich wurde gesagt, eine leere runTest Methode hinzufügen, aber das klingt nicht richtig auf alle ...)
Nun, nach Pythons unittest.TestCase
:
Die einfachste Testcase Unterklasse wird einfach überschreiben die runTest() Methode, um spezifische Testcode
ausführen Wie Sie mein ganzes Ziel sehen können, ist meine SimpleTest
N-mal ausgeführt werden. Ich muss den Überblick behalten, Fehler gegen N.
Welche Option habe ich?
Danke.
Was ist der Sinn es mehr als einmal zu laufen? Suchst du nach Rennbedingungen? –
@AlexLebedev Ja, ich glaube, das ist meine Absicht. Ich bin auf diesen "mysteriösen Fehler" gestoßen, der gelegentlich auftritt. Ich will damit sagen, dass es nichts mit dem Netzwerk zu tun hat. Ich verstehe, dass dies kein fairer Unit-Test ist. Laut der Dokumentation gibt es eine Möglichkeit zu sagen, wie viele in Ordnung sind und wie viele nach einem Test ausfallen. Aber ich bin mir nicht sicher, ob es einen richtigen Weg gibt zu tun, was ich will oder nicht. – User007