Come dire a py.test di saltare determinate directory?


91

Ho provato a utilizzare l' norecursedirsopzione all'interno di setup.cfg per dire a py.test di non raccogliere test da determinate directory ma sembra che lo ignori.

[tool:pytest]
norecursedirs=lib/third

Quando corro py.testvedo come ottengono i test dall'interno lib/third!


Sembra che io abbia py.tested pytestentrambi corrono test e sono bestie diverse. Strano ma pytestè quello che fallisce perché non carica le esclusioni da [pytest].
sorin

1
pytestè di logilab. Tu vuoi py.test.
ecatmur

3
prova anche a farenosecuredirs=lib/third/*
intelis

c'è un modo per ignorare alcune cartelle nello script stesso con il codice?
bicepjai

2
sono finita qui perché ero curioso di sapere perché diavolo le mie applicazioni web più critiche nello sviluppo locale sono così estremamente lente ... Il motivo era una directory di risorse caricata con una struttura nidificata yy / gg / mm .... che fa davvero schifo! per fortuna [pytest] norecursedirs = resourcesin pytest.inifa un trucco! 💪
andilabs

Risposte:


86

py.test --ignore=somedir ha funzionato per me


5
E --ignorepuò essere specificato più volte per ignorare più directory
phoenix

Come saltare alcuni test invece della directory
Rajat jain

È possibile utilizzare l' -kopzione come mostra un'altra risposta di seguito. Vedere "Esecuzione di test tramite espressioni di parole chiave" su docs.pytest.org/en/latest/… . Anche i segni possono essere utili qui. Contrassegna i tuoi test come "lenti", ecc. E poi usa-k "not slow"
shadfc

3
È anche possibile utilizzare--ignore-glob per ignorare i percorsi dei file di prova basati su caratteri jolly in stile shell Unix. Ad esempio --ignore-glob=**/sandbox/*ignorerà tutti i file in qualsiasi sandboxcartella.
Jan M.

28

Se hai più directory con diversi genitori puoi specificare diversi --ignoreparametri:

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

  • nuova opzione: --ignore impedirà la raccolta del percorso specificato.
    Può essere specificato più volte.

24

Ho risolto il mistero: se una sezione pytest si trova in uno dei possibili file di configurazione ( pytest.ini, tox.inie setup.cfg), pytest non cercherà nessun altro quindi assicurati di definire le opzioni py.test in un singolo file.

Suggerirei di usare setup.cfg.


9
Perché setup.cfg? La documentazione attuale sembra raccomandare gli altri due
jebob

Penso che sia importante menzionare che se vuoi usare un .inifile devi specificarlo con pytest -c pytest.ini. per qualche motivo i setup.cfgcontenuti venivano raccolti automaticamente.
giusto

17

Puoi usare

py.test -k 'not third'

che esclude tutti i contenuti della "terza" directory.


11

norecursedirsdovrebbe funzionare. Controlla se hai un file pytest.ini o altri file setup.cfg. Come stai invocando py.test?


1
Ho setup.cfgcon il corretto [pytest]e norecorsedirs all'interno, ma sembra essere ignorato, e invece cercherà tutti i file.
sorin

10

Nel mio caso, il problema era il carattere jolly mancante. Il seguente funziona per me:

[tool:pytest]
norecursedirs = subpath/*

mentre semplicemente norecursedirs = subpathno.


Anch'io. Un comportamento molto strano però.
azmeuk


0

Per usare pytest.ini(che è consigliato, a meno che tu non stia usando, toxnel qual caso tox.iniavrebbe senso), chiama pytestcon pytest -c pytest.ini.

Al fine di prevenire il mio campione not_me_1.pye not_me_2.pydalla fase di sperimentazione o lintati, i miei pytest.iniè la seguente:

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

[pycodestyle]
ignore = not_me_* ALL

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.