Ausführen von Python-package-unit-tests in PyCharm
Ich einfach 'portiert' ein Python-Paket, das ich Schreibe, PyCharm und mit ein bisschen Probleme beim ausführen von unit-tests für das gesamte Paket von der IDE.
In __init__.py
für das Paket ich habe load_tests
Funktion, die geht über alle Module im Paket und lädt relevanten tests. Es läuft prächtig mit:
$python -m unittest my_package
Jedoch, wenn ich versuche, es läuft von PyCharm (durch die Auswahl der top-Verzeichnis, in das Projekte-Fenster und schlagen Strg+Umschalt+F10) bekomme ich No tests were found
in das Fenster Ausführen, und
...\python.exe ...\pycharm\utrunner.py .../my_package/true
Testing started at ...
Process finished with exit code 0
Empty test suite.
in der Konsole-Fenster.
Ich warf einen kurzen Blick auf PyCharm ist utrunner.py
und es scheint, dass es ist suchen für Module mit einem bestimmten Muster (das starten mit test). Ich möchte bewahren, die Gegenwart Vanille Ansatz. Wie kann ich bei der Konfiguration PyCharm nutzen load_tests
aus __init__.py
zwar den code ändern, so wenig wie möglich?
Übrigens, test-Suiten für die einzelnen Module laufen nur Geldstrafe von PyCharm.
Mit PyCharm 3.1 Community Edition, Python 2.7.
Vielen Dank im Voraus.
InformationsquelleAutor malenkiy_scot | 2014-03-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Antwort geschrieben wurde, unter Berücksichtigung PyCharm 3.4.
Hatte das gleiche problem, Lösung gefunden für das problem in dieser Antwort, hoffe das ich deine Frage verstanden Recht:
https://stackoverflow.com/a/12242021/2427749
Konfigurierte ich meine Python-Test-runner-Konfiguration wie diese:
Nun findet mein unitests in meinem Unterordner mit Namen wie
classToBeTested_Test.py
by the way, ich bin vor ein anderes problem jetzt: der unit test nicht importieren kann das Modul getestet werden. Ursache der verschiedenen root-Ordner, denke ich.
Settings > Project Structure > Add Content Root
.Nur ein FYI, für andere... es hat ein wenig gedauert, aber "Muster" verwendet eine regex, nicht um eine reguläre shell-glob-wie
*Test.py
. Wenn so etwas wie, dass der test-runner-Absturz. Ich wusste nicht, es wollte einen regex, bis ich schaute auf die stack-trace!Ich bin glücklich, dass Sie haben mir gezeigt, den Weg.
Einfach zu vervollständigen für die Leute die vielleicht nicht wissen, alle über regex, einem einzigen start ( * ) wird die Suche nicht rekursiv sind, verwenden Sie zwei Sterne. z.B.:
**_test.py
zumindest für mich, das ist illegal syntax in regex (mehrfach wiederholen, ohne die vorherigen Muster). Das sieht aus wie glob.
InformationsquelleAutor this.myself
Mit PyCharm 2016.2 verwenden:
/path/to/tests/__init__.py
utrunner
zu verwendenunittest.TestLoader.loadTestsFromModule()
und die Methode callload_tests()
falls vorhanden, in das Modul.I. e. der Befehl ist
Ich hatte zu entfernen die tests-Verzeichnis von der
sys.path
im__init__.py
(siehe PY-15889):InformationsquelleAutor xmedeko