Reihenfolge der Tests im Python-Unittest

8

Ich schaute auf ähnliche Fragen und konnte keine Antwort auf mein Problem finden.

Ich habe Tests in einer Python-Klasse geschrieben, die von unittest.TestCase

abgeleitet ist %Vor%

Ich muss die Tests bestellen (bitte nicht sagen Sie mir, dass ich mich nicht auf die Testreihenfolge verlassen sollte, ich tue es einfach)

Bevor ich die Tests bestellen musste, war der Befehl, mit dem ich die Tests durchführte:

%Vor%

Dann wollte ich die Reihenfolge verschwinden lassen, also habe ich folgendes versucht:

%Vor%

Aber von hier aus weiß ich nicht, wie man die Tests durchführt, speziell mit testRunner=TeamcityTestRunner() wie ich es vorher getan habe.

Schätzen Sie Ihre Hilfe

    
slashms 17.05.2015, 11:14
quelle

2 Antworten

5

Option 1.

Eine Lösung hierfür (als Workaround) wurde hier gegeben - was darauf hindeutet, dass die Tests in numerierten Methoden geschrieben wurden step1 , step2 , usw., dann sammeln und speichern sie über dir(self) und geben sie an eine test_ methode welche try s jeweils.

Nicht ideal, aber tut was Sie erwarten. Jede Testsequenz muss eine einzelne TestClass sein (oder die dort angegebene Methode so anpassen, dass mehr als eine Sequenzgenerierungsmethode verwendet wird).

Option 2.

Eine andere Lösung, auch in der verknüpften Frage, ist, dass Sie Ihre Tests alphabetisch + numerisch sortiert benennen, damit sie in dieser Reihenfolge ausgeführt werden.

Schreiben Sie in beiden Fällen monolithische Tests, jede in ihrer eigenen Testklasse.

P.S. Ich stimme all den Kommentaren zu, die besagen, dass Komponententests nicht auf diese Weise durchgeführt werden sollten. Es gibt jedoch Situationen, in denen Unit-Test-Frameworks (wie unittest und pytest ) sich für Integrationstests eignen, die modulare, unabhängige Schritte erfordern sinnvoll. Auch wenn die QA die Dev nicht beeinflussen kann, um modularen Code zu schreiben, müssen diese Dinge getan werden.

    
aneroid 17.05.2015, 13:59
quelle
0

Ich habe lange gesucht, um dieses Problem selbst zu lösen.
Eine der Antworten in diese Frage macht genau das, was Sie brauchen.

Auf Ihren Code angewendet:

%Vor%

Leider funktioniert unittest.TestLoader.sortTestMethodsUsing=None nicht, obwohl dokumentiert Damit sollte vermieden werden, die Tests alphabetisch zu sortieren.

    
saroele 01.06.2016 08:40
quelle