2013-04-15 42 views
5

Ich habe meine Python-Tests mit dem Python-Format unittest erstellt.Wie python unittest discover Tests sortieren?

Jetzt bin ich in der Lage, sie mit

python -m unittest discover -s TestDirectory -p '*.py' -v 

ich finde sie alle, und führt sie zu laufen.

Jetzt gibt es einen kleinen Unterschied, ob ich die Tests unter Windows oder unter Linux ausführen. In der Tat werden die Tests unter Windows in alphabetischer Reihenfolge ausgeführt, während unter Linux die Tests in keiner offensichtlichen, für den Menschen spezifischen Erkennbarkeit ausgeführt werden, auch wenn sie immer dieselben sind.

Das Problem ist, verließ ich mich auf die ersten beiden Buchstaben der Testdatei, um die Reihenfolge der Ausführung der Tests zu sortieren. Nicht, dass sie in einer bestimmten Reihenfolge ausgeführt werden müssen, sondern um eine Art informationelle Tests zu haben, die Versionsdaten in ihrer Ausgabe zeigen, die zuerst im Testlaufprotokoll erscheinen.

Kann ich die Tests auch in alphabetischer Reihenfolge unter Linux ausführen?

+0

haben Sie versucht, nosetests? ich frage mich, ob ich direkt mit nosetests arbeiten kann. Ich benutze discover nicht aus dem unittest, weil nosetests das ziemlich gut machen können. Hast du das probiert? – CppLearner

+0

Einfach versucht. Sieht so aus, als ob Tests nach Linux sortiert sind. Vielen Dank. Aber ich möchte vermeiden, Entwickler zu zwingen, Nase zu installieren, und einfach Plain Python mit integriertem "Unittest" zu verwenden. –

+0

Wenn ich dies für meine Komponententests unter Linux ausführe, werden sie in der folgenden Reihenfolge sortiert: zuerst nach Datei- oder Verzeichnisnamen, nach Klassen sortiert, untergeordnet nach test (Methode) Name. Die Sache ist, wenn die Tests ausgeführt werden, werden zuerst die Test * -Namen * angezeigt, was nur die letzte Subunterordnung ist, und erscheint nicht mit irgendeiner logischen Reihenfolge. Ich möchte nur überprüfen, dass Ihre offensichtliche Nicht-Bestellung tatsächlich die obige Datei-/Verzeichnis-Klassen-Methode-Bestellung ist? – Evert

Antwort

0

Ich habe das nicht versucht, aber ich stelle mir vor, dass Sie die TestSuite-Klasse überschreiben können, um eine Sortierfunktion hinzuzufügen. Dann können Sie die Sortierfunktion aufrufen, bevor Sie die Funktion unit test run aufrufen. In einem "AllTests.py" -Skript könnten Sie beispielsweise Folgendes hinzufügen: