2016-06-22 22 views
0

Ich habe Python-Dateien und Unittests erstellt, aber ich verstehe nicht, wie ich alle Tests in einem Rutsch von der Eingabeaufforderung ausführen kann.Unittests von einer Eingabeaufforderung ausführen

Dateistruktur

- py 
    - __init__.py 
    - file1.py 
    - file2.py 
- tests 
    __init__.py 
    - test_file1.py 
    - test_file2.py 

Bitte lassen Sie mich das gleiche wissen. wenn ich versuche, Tests mit nosetests zu laufen, sagt es mir

no module name file1 
no module name file2 
+0

bitte buchen vollständige Fehler Traceback. – ravigadila

Antwort

3

Unten finden Sie eine Snip aus der Nase in der Dokumentation ist

Nase sammelt Tests automatisch von Python-Source-Dateien (da Sie nose mit Tags versehen haben) , Verzeichnisse und Pakete, die in seinem Arbeitsverzeichnis gefunden werden (standardmäßig das aktuelle Arbeitsverzeichnis). Alle Python-Quelldateien, -Verzeichnisse oder -Pakete, die dem regulären TestMatch-Ausdruck entsprechen (standardmäßig (?:\b|_)[Tt]est), werden als Test (oder Quelle für die Sammlung von Tests) erfasst. Außerdem werden alle anderen im Arbeitsverzeichnis gefundenen Pakete überprüft python-Source-Dateien oder Verzeichnisse, die Testspiel entsprechen. Package Entdeckung senkt den ganzen Weg hinunter den Baum, so package.tests und package.sub.tests und package.sub.sub2.tests werden alle gesammelt werden.

Emphasis Mine .

Sie können einfach alle Testfälle aus dem Stammverzeichnis Ihres Projekts ausführen:

$ cd /path/to/your/project 
$ nosetests 
+0

Ich tat das gleiche, aber es heißt "kein Modul namens test1" und "kein Modul namens test2" – sam

+0

@sam Versuchen Sie die "__init __. Py" aus dem Test-Verzeichnis –

+0

Ich sehe keine 'test1' oder' test2' in Ihre Verzeichnisstruktur. Sind Sie sicher, dass es sich nicht um einen Fehler in Ihrem eigenen Code handelt? Bearbeiten Sie Ihre Frage und aktualisieren Sie sie mit der vollständigen Rückverfolgung. – SuperSaiyan

2

Für einfache Entdeckung, können Sie die integrierte Befehlszeilen-Funktionalität des unittest Modul

$ cd /path/to/your/project/tests 
$ python -m unittest discover 

Oder, wenn Ihr tests Verzeichnis eine __init__.py hat, verwenden Sie

$ cd /path/to/your/project 
$ python -m unittest discover -s ./tests 

tun können Wenn Sie absolut müssen verwenden Sie Python 2.6, die python docs sagen, Sie können unittest2 installieren, die ein Backport der neuen Funktionen in hinzugefügt ist Python 2.7. Sie rufen es etwas anders

$ unit2 discover 

Auch, wenn Sie nicht schon zu weit unten auf dem unittest Test Kaninchenbau gegangen sind, würde ich empfehlen, pytest Check-out. Es erfordert viel weniger Vortex beim Schreiben von Tests und ermöglicht es Ihnen, nur die eingebaute assert zu verwenden. Es kommt auch mit einigen anderen coolen Funktionen wie Fixtures und parametrisierte Testfunktionen, mit denen Sie auch die Menge an Code in Ihrem Unittests reduzieren können.

+0

Ich benutze Python 2.6.6. es sagt, kein Modul namens discover – sam

+0

'discover' erfordert Py2.7 + IIRC. @ Brendan: OP hat 'nosetests' nicht 'pytest' markiert – SuperSaiyan

+1

@SuperSaiyan Ja, habe nicht einmal bemerkt, dass es ein neues Feature war. Es ist so lange her, dass ich ein System vor 2.7 gesehen habe. Der "Pytest" -Plug war nur ein zusätzlicher Bonus neben der Antwort. Ich bin vor ein paar Jahren auf 'pytest 'umgestiegen und habe das Gefühl, dass es meine Pflicht ist, so viele Leute wie möglich daran zu hindern," unitest.TestCase "und" self.assertNotEqual "Monstrositäten zu schreiben. –

Verwandte Themen