Ich möchte mit dem Schreiben von Komponententests für meinen Python-Code beginnen, und das py.test- Framework klingt nach einer besseren Wahl als Pythons gebündeltes Unittest . Also habe ich meinem Projekt ein "tests" -Verzeichnis hinzugefügt und test_sample.py hinzugefügt . Jetzt möchte ich PyCharm so konfigurieren, dass alle Tests in meinem Verzeichnis "tests" ausgeführt werden.
PyCharm unterstützt angeblich py.test in seinem Testläufer. Sie sollten in der Lage sein , eine Run / Debug-Konfiguration zu erstellen , um Ihre Tests auszuführen, und PyCharm hat angeblich ein Dialogfeld "Konfiguration erstellen" speziell für py.test . Aber das ist der vollständige Umfang ihrer Dokumentation zu diesem Thema, und ich kann dieses angebliche Dialogfeld nirgendwo finden.
Wenn ich das Verzeichnis , in dem Projekt - Tool - Fenster der rechten Maustaste, ich bin angeblich eine „Create <name>“ , um zu sehen Menüpunkt, aber das einzige Menüpunkt beginnend mit „Create“ ist „Create Run Configuration“. Okay, vielleicht ist die Dokumentation einfach falsch und "Create Run Configuration" klingt vielversprechend. Leider sind die einzigen zwei Elemente in seinem Untermenü "Unittests in C: \ mypath ..." und "Doctests in C: \ mypath ...", von denen keines zutrifft - ich verwende weder unittest noch doctest. Es gibt keinen Menüpunkt für py.test.
Wenn ich meine Datei test_sample.py öffne und mit der rechten Maustaste in das Editorfenster klicke, erhalte ich die versprochenen Menüelemente "<Name> erstellen": Es gibt "Unittests in test_sa erstellen ..." ... gefolgt von "Ausführen" 'Unittests in test_sa ...' "und" Debug 'Unittests in test_sa ...' ". Also noch einmal, es ist alles spezifisch für das unittest Framework; nichts für py.test.
Wenn ich die Menüelemente "unittest" versuche, wird ein Dialogfeld mit Optionen für "Name", "Typ", ein Gruppenfeld "Tests" mit "Ordner" und "Muster" sowie "Skript" und "Klasse" angezeigt "und" Funktion "usw. Dies klingt genau so, wie es als Dialog zum Hinzufügen einer Konfiguration für Python Unit Test dokumentiert ist , und nicht wie die Optionen" Name "und" Test to run "und" Keywords ", die angezeigt werden sollen in der Konfiguration für py.test Dialog. Im Dialogfeld gibt es nichts zu ändern, welches Testframework ich hinzufüge.
Ich verwende PyCharm 1.5.2 unter Windows mit Python 3.1.3 und pytest 2.0.3. Ich kann py.test
meine Tests erfolgreich über die Befehlszeile ausführen , daher ist es nicht so einfach, dass pytest nicht ordnungsgemäß installiert wird.
Wie konfiguriere ich PyCharm für die Ausführung meiner py.test-Tests?
File | Settings | Tools | Python Integrated Tools
nur in den Projekteinstellungen und nicht in den Standardeinstellungen in PyCharm 5PyCharm 2017.3
Preference -> Tools -> Python integrated Tools
- Wählen Siepy.test
alsDefault test runner
.Preference -> Languages&Frameworks -> Django
- Set verwenden, aktivieren Sie das KontrollkästchenDo not use Django Test runner
Run/Debug configuration
, andernfalls werden Tests mit diesen älteren Konfigurationen ausgeführt.Run/Debug Configuration -> Defaults -> Python tests -> py.test -> Additional Arguments
quelle
New => Python File
, um dieKind:
Drop - Down - Angebote nur: Python - Datei, Unit - Test, Python Stummel, nicht Pytest. Ich habe an allen Stellen gesucht, die in den obigen Threads erwähnt wurden. Was vermisse ich?Ich denke, Sie müssen das Element Run / Debug Configuration in der Symbolleiste verwenden. Klicken Sie darauf und klicken Sie auf "Konfigurationen bearbeiten" (oder verwenden Sie alternativ den Menüpunkt "Ausführen-> Konfigurationen bearbeiten"). Im Abschnitt "Standardeinstellungen" im linken Bereich befindet sich ein Element "py.test", von dem ich denke, dass es das ist, was Sie wollen.
Ich fand auch, dass das Handbuch dafür nicht mit der Benutzeroberfläche übereinstimmte. Hoffe ich habe das Problem richtig verstanden und das hilft.
quelle
Target
umScript ath
es an die Wurzel meines Tests und zeigen OrdnerSo habe ich es mit Pytest
3.7.2
(über Pip installiert) und Pycharms gemacht2017.3
:edit configurations
py.test
target
=python
und das unbenannte Feld unten auf setzentests
. Es sieht so aus, als wäre dies der Name Ihres Testordners. Ich bin mir nicht sicher, ob es hart ist. Ich empfehle auch das-s
Argument, damit sich die Konsole beim Debuggen Ihrer Tests ordnungsgemäß verhält. Ohne das Argument erfasst pytest die Ausgabe und macht die Debug-Konsole fehlerhaft.my_project/tests
).foobar_test.py
Datei: (keine Importe erforderlich):quelle
Es ist sicher schlecht dokumentiert. Sobald Sie eine neue Konfiguration aus den Standardeinstellungen hinzugefügt haben, können Sie das Skript "/ Applications / PyCharm CE.app/Contents/helpers/pycharm/pytestrunner.py" ausführen. Es ist nicht dokumentiert und hat seine eigenen Vorstellungen von Befehlszeilenargumenten.
Sie können:
Seltsamerweise fällt es Ihnen schwer, eine Diskussion zu finden, da JetBrains Google-Algorithmen mit eigenen Seiten gut bombardiert.
quelle
Finden Sie diesen Thread, wenn ich dieselbe Frage habe und die Lösung gefunden habe. pycharm version: 2017.1.2 Gehen Sie zu "Einstellungen" -> "Tools" -> "Python Integrated Tools" und legen Sie den Standard-Testläufer im rechten Seitenbereich als py.test fest löse mein Problem
quelle
In pycharm 2019.2 können Sie dies einfach tun, um alle Tests auszuführen:
Eine bessere Integration von pytest in pycharm finden Sie unter https://www.jetbrains.com/help/pycharm/pytest.html
quelle
Ich benutze 2018.2
Ich führe aus -> Konfigurationen bearbeiten ... Klicken Sie dann oben links im modalen Dialogfeld auf das +. Wählen Sie "Python-Tests" -> py.test Dann gebe ich ihm einen Namen wie "Alle Tests mit py.test"
Ich wähle Ziel: Modulname und gebe das Modul ein, in dem sich meine Tests befinden (das sind 'Tests' für mich), oder das Modul, in dem sich mein gesamter Code befindet, wenn meine Tests mit meinem Code gemischt sind. Das hat mich gestolpert.
Ich habe den Python-Interpreter eingestellt.
Ich habe das Arbeitsverzeichnis auf das Projektverzeichnis gesetzt.
quelle
Mit einem speziellen Conda-Python-Setup, das die Pip-Installation für py.test sowie die Verwendung des Specs-Add-Ins (Option --spec) (für Rspec wie eine nette Testzusammenfassungssprache) beinhaltete, musste ich dies tun.
1.Bearbeiten Sie den Standard-py.test so, dass er die Option = --spec enthält. Verwenden Sie dazu das Plugin: https://github.com/pchomik/pytest-spec
2.Erstellen Sie mit py.test eine neue Testkonfiguration. Ändern Sie den Python-Interpreter so, dass Sie ~ / anaconda / envs / Ihre Auswahl an Interpreten verwenden, z. B. py27 für meine Namen.
3. Löschen Sie die Testkonfiguration 'unittests'.
4. Jetzt ist die Standard-Testkonfiguration py.test mit meinen schönen Rspec-Ausgaben. Ich liebe es! Vielen Dank an alle!
Das Dokument von ps Jetbrains zum Ausführen / Debuggen von Konfigurationen finden Sie hier: https://www.jetbrains.com/help/pycharm/2016.1/run-debug-configuration-py-test.html?search=py.test
quelle
Mit 2018.3 scheint es automatisch zu erkennen, dass ich pytest verwende, was nett ist, aber es erlaubt immer noch nicht, von der obersten Ebene des Projekts aus zu laufen. Ich musste
pytest
für jeden rennentests
Verzeichnis einzeln .Ich stellte jedoch fest, dass ich eine der Konfigurationen auswählen und manuell bearbeiten konnte, um sie im Stammverzeichnis des Projekts auszuführen, und dass dies funktionierte. Ich muss es manuell in der Dropdown-Liste Konfigurationen auswählen - kann nicht mit der rechten Maustaste auf den Stammordner im Projektfenster klicken. Aber zumindest kann ich alle Tests gleichzeitig ausführen.
quelle
Aktivieren Sie Pytest für Ihr Projekt
quelle