Wie kann man py.test anweisen, bestimmte Verzeichnisse zu überspringen?


90

Ich habe versucht, die norecursedirsOption in setup.cfg zu verwenden, um py.test anzuweisen, keine Tests aus bestimmten Verzeichnissen zu sammeln, aber es scheint, dass dies ignoriert wird.

[tool:pytest]
norecursedirs=lib/third

Wenn ich renne, py.testsehe ich, wie es Tests von innen bekommt lib/third!


Es scheint, dass ich py.testund pytestbeide Lauftests haben und verschiedene Bestien sind. Seltsam, aber pytestes schlägt fehl, weil die Ausschlüsse von nicht geladen werden [pytest].
Sorin

1
pytestist von logilab. Du willst py.test.
Ecatmur

3
versuchen Sie es auchnosecuredirs=lib/third/*
Intelis

Gibt es eine Möglichkeit, einige Ordner im Skript selbst mit Code zu ignorieren?
Bizepsjai

2
Ich bin hier gelandet, weil ich neugierig war, warum zum Teufel mein Pytest der Web-App in der lokalen Entwicklung so extrem langsam ist ... Der Grund war ein hochgeladenes Ressourcenverzeichnis mit verschachtelter JJ / TT / MM-Struktur ... was wirklich scheiße ist! zum Glück [pytest] norecursedirs = resourcesin pytest.initut einen Trick 💪!
andilabs

Antworten:


85

py.test --ignore=somedir arbeitete für mich


5
Und --ignorekann mehrfach angegeben werden, um mehrere Verzeichnisse zu ignorieren
Phoenix

Wie man bestimmte Tests anstelle des Verzeichnisses überspringt
Rajat Jain

Sie können die -kOption verwenden, wie eine andere Antwort unten zeigt. Siehe "Ausführen von Tests anhand von Schlüsselwortausdrücken" auf docs.pytest.org/en/latest/… . Auch hier können Markierungen hilfreich sein. -k "not slow"
Markieren Sie

Es ist auch möglich zu verwenden--ignore-glob Testdateipfade auf dem Unix-Shell Platzhalter Basis zu ignorieren. ZB --ignore-glob=**/sandbox/*werden alle Dateien in einem sandboxOrdner ignoriert .
Jan M.

27

Wenn Sie mehrere Verzeichnisse mit unterschiedlichen Eltern haben, können Sie verschiedene --ignoreParameter angeben :

py.test --ignore=somedir --ignore=otherdir --ignore=etcdir

  • Neue Option: --ignore verhindert, dass der angegebene Pfad erfasst wird.
    Kann mehrfach angegeben werden.

23

Ich habe das Rätsel gelöst: Wenn ein pytest-Abschnitt in einer der möglichen Konfigurationsdateien ( pytest.ini, tox.iniund setup.cfg) gefunden wird, sucht pytest nicht nach anderen. Stellen Sie daher sicher, dass Sie die py.test-Optionen in einer einzelnen Datei definieren.

Ich würde vorschlagen, zu verwenden setup.cfg.


8
Warum setup.cfg? Die aktuelle Dokumentation scheint die anderen beiden
Jebob

Ich denke, es ist wichtig zu erwähnen, dass, wenn Sie eine .iniDatei verwenden möchten, Sie sie mit angeben müssen pytest -c pytest.ini. Aus irgendeinem Grund wurden setup.cfgInhalte automatisch aufgenommen.
Vor

17

Sie können verwenden

py.test -k 'not third'

das schließt alle 'dritten' Verzeichnisinhalte aus.


11

norecursedirssollte arbeiten. Überprüfen Sie, ob Sie eine pytest.ini oder andere setup.cfg-Dateien haben. Wie rufst du an py.test?


1
Ich habe zwar setup.cfgdie richtigen [pytest]und norecorsedirs drin, aber es scheint ignoriert zu werden, und stattdessen wird nach allen Dateien gesucht.
Sorin

7

In meinem Fall war das Problem der fehlende Platzhalter. Folgendes funktioniert für mich:

[tool:pytest]
norecursedirs = subpath/*

während einfach norecursedirs = subpathnicht.


Hier gilt das gleiche. Sehr seltsames Verhalten.
Azmeuk


0

Zur Nutzung pytest.ini(was empfohlen wird, es sei denn , Sie verwenden , toxin welchem Fall tox.iniwürde Sinn machen), Anruf pytestmit pytest -c pytest.ini.

Um meine Probe zu verhindern not_me_1.pyund not_me_2.pyvon zu prüfenden oder linted, meine pytest.iniist wie folgt:

[pytest]
addopts = --ignore-glob=not_me_*

[pycodestyle]
ignore = not_me_* ALL

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.