wake-up-neo.net

Wie konfiguriere ich PyCharm, um py.test-Tests auszuführen?

Ich möchte anfangen, Unit-Tests für meinen Python-Code zu schreiben, und das py.test -Framework klingt wie eine bessere Wette als Pythons gebündeltes unittest . Also fügte ich meinem Projekt ein Verzeichnis "tests" hinzu und fügte test_sample.py hinzu. Jetzt möchte ich PyCharm so konfigurieren, dass alle Tests in meinem "Tests" -Verzeichnis ausgeführt werden.

PyCharm soll angeblich unterstützt py.test in seinem Testläufer. Sie sollten in der Lage sein, Erstellen einer Run/Debug-Konfiguration , um Ihre Tests auszuführen, und PyCharm hat angeblich ein Dialogfeld "Konfiguration erstellen" speziell für py.test . Dies ist jedoch der vollständige Umfang ihrer Dokumentation zu diesem Thema, und ich kann dieses angebliche Dialogfeld nirgendwo finden.

Wenn ich im Projekt-Tool-Fenster mit der rechten Maustaste auf das Verzeichnis klicke, bin ich angenommen , um einen Menüpunkt "Create <name>" anzuzeigen, aber der einzige Menüpunkt, der mit "Create" beginnt, ist "Create Run Configuration" ". Okay, vielleicht ist die Dokumentation einfach falsch und "Create Run Configuration" klingt vielversprechend. Leider sind die einzigen beiden Elemente in seinem Untermenü "Unittests in C:\mypath ..." und "Doctests in C:\mypath ...", wobei keines der beiden zutreffend ist. Ich verwende weder ein noch ein Test. Es gibt keinen Menüpunkt für py.test.

Wenn ich meine test_sample.py öffne und mit der rechten Maustaste im Editorfenster klicke, bekomme ich die versprochenen Menüpunkte "Create <name>": "Create" Unittests in test_sa ... "...", gefolgt von "Run" 'Unittests in test_sa ...' "und" Debuggen 'unittests in test_sa ...' ". Es ist also alles spezifisch für den reinsten Rahmen; nichts für py.test.

Wenn ich die Menüpunkte "unittest" versuche, erhalte ich ein Dialogfeld mit Optionen für "Name", "Typ", ein Gruppenfeld "Tests" mit "Ordner" und "Muster" sowie "Skript" und "Klasse" "und" Funktion "usw. Dies klingt genau wie das, was als Dialog zum Hinzufügen einer Konfiguration für Python Unit Test dokumentiert ist, und nicht wie die Optionen" Name "und" Test zum Ausführen "und" Schlüsselwörter " die im Konfiguration für py.test Dialog erscheinen sollen. Es gibt nichts innerhalb des Dialogs, um zu wechseln, welches Test-Framework 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 erfolgreich in meinen Tests von der Kommandozeile aus ausführen, daher ist es nicht so einfach, dass pytest nicht richtig installiert wird.

Wie konfiguriere ich PyCharm, um meine py.test-Tests auszuführen?

124
Joe White

Bitte gehen Sie zu Datei | Einstellungen | Werkzeuge | Python Integrated Tools und ändern Sie den Standardtest Runner in py.test. Dann erhalten Sie die Option py.test, um Tests zu erstellen, anstatt nur die Tests zu testen.

198
yole

PyCharm 2017.3

  1. Preference -> Tools -> Python integrated Tools - Wählen Sie py.test als Default test runner.
  2. Wenn Sie Django verwenden Preference -> Languages&Frameworks -> Django - Setzen Sie einen Haken bei Do not use Django Test runner
  3. Löschen Sie alle vorherigen ausgeführten Tests von Run/Debug configuration. Anderenfalls werden die Tests mit dieser Konfiguration ausgeführt. 
  4. Um einige zusätzliche Standardargumente festzulegen, aktualisieren Sie die Standardkonfiguration von py.test. Run/Debug Configuration -> Defaults -> Python tests -> py.test -> Additional Arguments
25
Sergey Kubrak

Ich denke, Sie müssen das Element Run/Debug Configuration in der Symbolleiste verwenden. Klicken Sie darauf und 'Konfigurationen bearbeiten' (oder verwenden Sie alternativ den Menüpunkt Ausführen-> Konfigurationen bearbeiten). Im Abschnitt "Defaults" 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.

16
Scott Griffiths

Es ist schlecht dokumentiert, um sicher zu sein. Wenn Sie eine neue Konfiguration aus den Standardeinstellungen hinzugefügt bekommen, können Sie das Skript "/ Applications/PyCharm CE.app/Contents/helpers/pycharm/pytestrunner.py" ausführen. Es ist nicht dokumentiert und hat eigene Vorstellungen von Befehlszeilenargumenten.

Sie können:

  1. Versuchen Sie herumzuspielen, drehen Sie das Skript um und sehen Sie, ob Sie py.test irgendwie dazu bringen können, Argumente zu akzeptieren. Es könnte funktionieren; In der ersten halben Stunde war es für mich nicht.
  2. Führen Sie einfach "py.test * .py" von einer Konsole aus aus.

Seltsamerweise wird es Ihnen schwer fallen, Diskussionen zu finden, da JetBrains Google-Algorithmen mit eigenen Seiten bombardieren kann.

5
Charles Merriam

So habe ich es mit pytest 3.7.2 (per pip installiert) und pycharms 2017.3 zum Laufen gebracht:

  1. Gehe zu edit configurations

  1. Fügen Sie eine neue Laufkonfiguration hinzu und wählen Sie py.test aus.

  1. In den Ausführungskonfigurationsdetails müssen Sie target = python und das unbenannte Feld darunter auf tests setzen. Es sieht so aus, als wäre dies der Name Ihres Testordners. Nicht ganz sicher, hart. Ich empfehle auch das Argument -s, damit sich die Konsole beim Debuggen Ihrer Tests ordnungsgemäß verhält. Ohne das Argument erfasst pytest die Ausgabe und macht die Debug-Konsole fehlerhaft.

  1. Mein Testordner sieht so aus. Dies ist knapp unter der Wurzel meines Projekts (my_project/tests).

  1. Meine foobar_test.py-Datei: (keine Importe erforderlich):
 def test_foobar (): 
 print ("hallo pytest") 
 behaupten, dass 
  1. Führen Sie es mit dem normalen Startbefehl aus

3

finden Sie diesen Thread, wenn ich dieselbe Frage gefunden habe und die Lösung gefunden habe pycharm version: 2017.1.2 Gehen Sie zu "Einstellungen" -> "Extras" -> "Python Integrated Tools" und setzen Sie den Standard-Testläufer von rechts seitentafel als py.test löse mein problem

3
jacobcan118

Ich verwende 2018.2

Ich mache Ausführen -> Konfigurationen bearbeiten ... Klicken Sie dann oben links im modalen Dialog auf das +. Wählen Sie "Python-Tests" -> py.test Alle testen mit py.test "

Ich wähle Ziel: Modulname .__ aus und gebe das Modul ein, in dem sich meine Tests befinden (dh Tests für mich) oder das Modul, in dem sich mein Code befindet, wenn meine Tests mit meinem Code gemischt werden. Das hat mich gestürzt.

Ich habe den Python-Interpreter eingestellt.

Ich habe das Arbeitsverzeichnis auf das Projektverzeichnis gesetzt.

2
Brian C.

Mit 2018.3 scheint es automatisch zu erkennen, dass ich Pytest verwende, was Nizza ist, aber es erlaubt immer noch nicht, von der obersten Ebene des Projekts aus zu laufen. Ich musste pytest für jedes tests-Verzeichnis einzeln ausführen.

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. Ich kann nicht mit der rechten Maustaste auf den Stammordner im Projektfenster klicken. Zumindest kann ich alle Tests auf einmal ausführen.

0
sfjac

Mit einem speziellen Conda-Python-Setup, das die Pip-Installation für py.test sowie die Verwendung des Specs-Addins (Option --spec) (für Rspec wie Nice Test Summary Language) beinhaltete, musste ich Folgendes tun; 

1.Bearbeiten Sie die Standardeinstellung py.test so, dass sie die Option = --spec enthält. Verwenden Sie dazu das Plugin: https://github.com/pchomik/pytest-spec

2.Erstellen Sie eine neue Testkonfiguration mit py.test. Ändern Sie den Python-Interpreter in ~/anaconda/envs/Ihre Wahl der Interpreter, z. B. py27 für meine Benennungen.

3.Löschen Sie die Testkonfiguration "Unittests".

4. Jetzt ist die Standard-Testkonfiguration py.test mit meinen schönen Rspec-Stilausgaben. Ich liebe es! Danke euch allen!

p.s. Jetbrains 'doc on run/debug configs ist hier: https://www.jetbrains.com/help/pycharm/2016.1/run-debug-configuration-py-test.html?search=py.test

0
AnneTheAgile