2016-04-06 7 views
31

Gibt es eine Möglichkeit, PyTest-Tests auszuwählen, die aus einer Datei ausgeführt werden sollen? Zum Beispiel kann eine Datei foo.txt eine Liste von Tests enthalten, ausgeführt werden:Gibt es eine Möglichkeit anzugeben, welche Pytest-Tests aus einer Datei ausgeführt werden sollen?

tests_directory/foo.py::test_001 
tests_directory/bar.py::test_some_other_test 

Oder ist es eine Möglichkeit, mehrere Tests auszuwählen, in Testnamen kein gemeinsames Muster, aus verschiedenen Verzeichnissen mit pytest?

py.test -k <pattern> ermöglicht ein einzelnes Muster.

Eine Option ist eine pytest.mark für jeden Test zu haben, aber meine Anforderung besteht darin, verschiedene Kombinationen von Tests aus verschiedenen Dateien auszuführen.

Gibt es eine Möglichkeit, mehrere Muster und einen Testdateinamen für jedes Muster anzugeben? Oder gibt es eine Möglichkeit, die genauen Testpfade in einer Datei anzugeben und diese Datei als Eingabe an pytest zu übergeben? Oder Gibt es eine Hook-Funktion, die für diesen Zweck verwendet werden kann?

Antwort

52

können Sie -k Option verwenden, um Testfälle mit unterschiedlichen Mustern auszuführen:

py.test tests_directory/foo.py tests_directory/bar.py -k 'test_001 or test_some_other_test' 

Diese test_001 und Testfälle mit dem Namen test_some_other_test Abwählen den Rest der Testfälle laufen.

Hinweis: Dies wird jeden Testfall wählen mit Start test_001 oder test_some_other_test. Wenn Sie beispielsweise den Testfall test_case0012 haben, wird dieser auch ausgewählt.

+1

Dank laufen. Aber wenn es einen Test mit demselben Namen in foo.py und bar.py (zB test_001) gibt, wird es am Ende von beiden ausgeführt. – Sharad

+1

ja es wird, wird jede Sache, die das Muster entspricht ausgeführt werden, wie ich in der Note – supamaze

+0

erwähnt habe Aber das ist ein Problem für mich. Ich würde gerne auswählen, welche Tests aus welcher Datei ausgeführt werden sollen. – Sharad

0

Vielleicht pytest_collect_file() Haken verwenden Sie den Inhalt einer .txt o .yaml Datei analysieren kann, wo die Tests angeben, wie Sie wollen, und bringt sie zu den pytest Kern.

Ein schönes Beispiel zeigt die pytest documentation. Ich denke, wonach du suchst.

-3

Führen Sie die folgenden einfachen Schritten spezifischen Test in der definierten Testklasse oder laufen nur bestimmte Testklasse bzw.

$pytest -v tests_directory/foo.py TestClass.test_method_001 

$pytest -v tests_directory/foo.py TestClass 
+0

Funktioniert nicht für mich ... Ich bekomme 'Datei nicht gefunden' – Stefan

+0

@Stefan Können Sie weitere Ausgaben teilen und welchen Befehl Sie verwenden? – Viswesn

+2

Das Problem ist der Abstand zwischen dem Dateinamen und dem Klassennamen. Wenn Sie den Anweisungen in anderen Antworten folgen, funktioniert die Verwendung von '::' als Trennzeichen. – Stefan