Bagaimana cara memberi tahu py.test untuk melewati direktori tertentu?


91

Saya mencoba menggunakan norecursedirsopsi di dalam setup.cfg untuk memberi tahu py.test untuk tidak mengumpulkan tes dari direktori tertentu tetapi tampaknya itu mengabaikannya.

[tool:pytest]
norecursedirs=lib/third

Ketika saya menjalankan, py.testsaya melihat bagaimana ia mendapatkan tes dari dalam lib/third!


Sepertinya saya memiliki py.testdan pytestkeduanya menjalankan tes dan menjadi binatang yang berbeda. Aneh tetapi pytestyang gagal karena tidak memuat pengecualian dari [pytest].
sorin

1
pytestberasal dari logilab. Kamu mau py.test.
ecatmur

3
juga coba lakukannosecuredirs=lib/third/*
intelis

apakah ada cara untuk mengabaikan beberapa folder di skrip itu sendiri dengan kode?
bicepjai

2
berakhir di sini karena saya ingin tahu mengapa aplikasi web saya dalam pengembangan lokal sangat lambat ... Alasannya adalah beberapa direktori sumber daya yang diunggah dengan struktur yy / dd / mm bersarang .... menyebabkannya sangat menyebalkan! untungnya [pytest] norecursedirs = resourcesdalam pytest.inimelakukan trik! 💪
andilabs

Jawaban:


85

py.test --ignore=somedir bekerja untuk saya


5
Dan --ignoredapat ditentukan beberapa kali untuk mengabaikan beberapa direktori
phoenix

Cara melewati tes tertentu alih-alih direktori
Rajat jain

Anda dapat menggunakan -kopsi seperti yang ditunjukkan jawaban lain di bawah ini. Lihat "Menjalankan pengujian dengan ekspresi kata kunci" di docs.pytest.org/en/latest/… . Marks mungkin berguna di sini juga. Tandai tes Anda sebagai "lambat", dll dan kemudian gunakan-k "not slow"
shadfc

Ini juga dapat digunakan--ignore-glob untuk mengabaikan jalur file pengujian berdasarkan wildcard gaya shell Unix. Misal --ignore-glob=**/sandbox/*akan mengabaikan semua file di sandboxfolder manapun .
Jan M.

28

Jika Anda memiliki beberapa direktori dengan induk yang berbeda, Anda dapat menentukan --ignoreparameter yang berbeda :

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

  • opsi baru: --ignore akan mencegah jalur yang ditentukan dari koleksi.
    Dapat ditentukan beberapa kali.

23

Saya memecahkan misterinya: Jika bagian pytest ditemukan di salah satu file konfigurasi yang mungkin ( pytest.ini, tox.inidansetup.cfg ), pytest tidak akan mencari yang lain jadi pastikan Anda menentukan opsi py.test dalam satu file.

Saya akan menyarankan menggunakan setup.cfg.


8
Kenapa setup.cfg? Dokumentasi saat ini tampaknya merekomendasikan dua lainnya
jebob

Saya rasa penting untuk menyebutkan bahwa jika Anda ingin menggunakan .inifile, Anda perlu menentukannya pytest -c pytest.ini. untuk beberapa alasan, setup.cfgkonten diambil secara otomatis.
kanan

17

Kamu bisa memakai

py.test -k 'not third'

yang mengecualikan semua konten direktori 'ketiga'.


11

norecursedirsharus bekerja. Periksa apakah Anda memiliki pytest.ini atau file setup.cfg lainnya. Bagaimana Anda memohon py.test?


1
Saya punya setup.cfgdengan yang tepat [pytest]dan norecorsedir di dalamnya tetapi tampaknya diabaikan, dan sebaliknya akan mencari semua file.
sorin

8

Dalam kasus saya, masalahnya adalah wildcard yang hilang. Pekerjaan berikut untuk saya:

[tool:pytest]
norecursedirs = subpath/*

padahal norecursedirs = subpathtidak.


Sama disini. Perilaku yang sangat aneh sekalipun.
azmeuk


0

Untuk menggunakan pytest.ini(yang disarankan, kecuali jika Anda menggunakan toxdalam hal tox.iniini masuk akal), panggil pytestdengan pytest -c pytest.ini.

Untuk mencegah sampel saya not_me_1.pydan not_me_2.pyagar tidak diuji atau diikat, saya pytest.iniadalah sebagai berikut:

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

[pycodestyle]
ignore = not_me_* ALL

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.