Ich habe eine Datei namens test_web.py, die eine Klasse TestWeb und viele Methoden wie test_something () enthält.
Ich kann jeden Test in der Klasse folgendermaßen ausführen:
$ nosetests test_web.py
...
======================================================================
FAIL: checkout test
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/me/path/here/test_web.py", line 187, in test_checkout
...
Aber ich kann nicht scheinen, einzelne Tests durchzuführen. Diese geben mir "Kein solcher Test" -Fehler, wenn ich in derselben PWD ausgeführt werde:
$ nosetests test_web.py:test_checkout
$ nosetests TestWeb:test_checkout
Was könnte hier falsch sein?
Antworten:
Sie müssen es wie folgt angeben :
nosetests <file>:<Test_Case>.<test_method>
, oderSiehe die Dokumente
quelle
Sie können auch ein Modul angeben:
quelle
nosetests
oder was, aber diese Syntax schlägt fehl. Was jedoch funktioniert, ist :nosetests tests/test_integration:IntegrationTests.test_user_search_returns_users
, was bedeutet - Referenzdateien als Dateien, nicht Python-Module, die/
anstelle von.
tests
, dass Sie kein Modul in Ihrem Setup sind?__init__.py
imtests
Verzeichnis vergessen . Gut gemacht! Vielen DankDas Angeben von Namen in der Befehlszeile, wie in den anderen Antworten angegeben, funktioniert und ist nützlich. Wenn ich gerade Tests schreibe, stelle ich jedoch häufig fest, dass ich nur den Test ausführen möchte, an dem ich arbeite, und die Namen, die ich in die Befehlszeile schreiben müsste, werden ziemlich lang und umständlich zu schreiben . In diesem Fall bevorzuge ich die Verwendung eines benutzerdefinierten Dekorateurs und einer Flagge.
Ich definiere
wipd
("work in progress decorator") folgendermaßen:Dies definiert einen Dekorateur,
@wipd
der daswip
Attribut für Objekte festlegt , die er dekoriert. Zum Beispiel:Dann
-a wip
kann in der Befehlszeile verwendet werden , um die Ausführung des Tests auf das mit markiert zu verengen@wipd
.Hinweis zu Namen ...
Ich verwende den Namen
@wipd
für den Dekorateur, anstatt@wip
diese Art von Problem zu vermeiden:Dadurch
import
wird derwip
Dekorateur zu einem Mitglied der Klasse , und alle Tests in der Klasse werden ausgewählt. Dasattrib
Plugin überprüft die übergeordnete Klasse einer Testmethode, um festzustellen, ob das ausgewählte Attribut auch dort vorhanden ist und die Attribute, die von erstellt und getestet werdenattrib
, nicht in einem getrennten Bereich vorhanden sind. Wenn Sie also mit testen-a foo
und Ihre Klasse enthältfoo = "platypus"
, werden alle Tests in der Klasse vom Plugin ausgewählt.quelle
Um mehrere spezifische Tests auszuführen, können Sie sie einfach der durch Leerzeichen getrennten Befehlszeile hinzufügen.
quelle
In meinen Tests funktioniert das Angeben von Tests mit Modulnamen nicht
Sie müssen den tatsächlichen Pfad angeben zu
.py
:Dies mit
nose==1.3.7
quelle
Meine Anforderung bestand darin, einen einzelnen Test in einer Testdatei auszuführen, die sich in einem anderen Windows- Verzeichnis befand. Dies erfolgte über die Anaconda-Eingabeaufforderung wie folgt:
lief nosetests von:
aber test_MyTestFile.py und MethodsFile.py befanden sich in:
einzelne Prüfung durchführen , indem einschließlich Pfad mit Anführungszeichen wie folgt:
test_MyTestFile.py sah folgendermaßen aus:
MethodsFile.py sah folgendermaßen aus:
quelle