Py.test'e belirli dizinleri atlaması nasıl söylenir?


91

norecursedirsPy.test'e belirli dizinlerden test toplamamasını söylemek için setup.cfg içindeki seçeneği kullanmayı denedim, ancak görünüşe göre bunu görmezden geliyor.

[tool:pytest]
norecursedirs=lib/third

Koştuğumda py.testiçeriden nasıl testler aldığını görüyorum lib/third!


Görünüşe göre benim py.testve pytestikisi de testler yapıyor ve farklı hayvanlar oluyor. Garip ama pytestbaşarısız olanıdır çünkü dışlamaları yüklemiyor [pytest].
sorin

1
pytestlogilab'dandır. Sen istiyorsun py.test.
ecatmur

3
ayrıca yapmayı denenosecuredirs=lib/third/*
intelis

kodun kendisinde bulunan bazı klasörleri yok saymanın bir yolu var mı?
bicepjai

2
burada sona erdi çünkü yerel geliştirmedeki en büyük web uygulamasının neden bu kadar yavaş olduğunu merak ediyordum ... Nedeni, iç içe geçmiş yy / gg / mm yapısına sahip bazı yüklenen kaynaklar diziniydi .... gerçekten berbat olmasına neden oluyordu! Neyse ki [pytest] norecursedirs = resourcesiçinde pytest.inibir hile yok 💪!
andilabs

Yanıtlar:


85

py.test --ignore=somedir benim için çalıştı


5
Ve --ignorebirden çok dizini yok saymak için birden çok kez belirtilebilir
phoenix

Dizin yerine belirli testler nasıl atlanır
Rajat jain

-kSeçeneği aşağıda gösterilen başka bir cevap olarak kullanabilirsiniz . Docs.pytest.org/en/latest/… adresinde "Anahtar kelime ifadelerine göre test çalıştırma" konusuna bakın . İşaretler burada da yardımcı olabilir. Testlerinizi "yavaş" vb. Olarak işaretleyin ve ardından-k "not slow"
shadfc

1
Ayrıca mümkündür kullanmak--ignore-glob Unix kabuk tarzı joker karakterler dayalı bir test dosya yollarını görmezden. Örneğin --ignore-glob=**/sandbox/*, herhangi bir sandboxklasördeki tüm dosyaları yok sayacaktır .
Ocak M.

28

Farklı üst öğelere sahip birkaç dizininiz varsa, farklı --ignoreparametreler belirtebilirsiniz :

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

  • yeni seçenek: --ignore belirtilen yolun toplanmasını engelleyecektir.
    Birden çok kez belirtilebilir.

23

Gizemi çözüldü: Bir pytest bölüm olası yapılandırma dosyalarından birinde bulunan (varsa pytest.ini, tox.inive setup.cfg), pytest kadar emin sen tek bir dosyada py.test seçeneklerini tanımlayın olmak herhangi diğerleri için bakmayacak.

Kullanmanızı öneririm setup.cfg.


8
Neden setup.cfg? Mevcut belgeler diğer ikisini
jebob

Bir .inidosyayı kullanmak istiyorsanız bunu belirtmeniz gerektiğini belirtmenin önemli olduğunu düşünüyorum pytest -c pytest.ini. bazı nedenlerden dolayı setup.cfgiçerikler otomatik olarak alındı.
sağda

17

Kullanabilirsiniz

py.test -k 'not third'

tüm 'üçüncü' dizin içeriğini hariç tutan.


11

norecursedirsçalışmalı. Bir pytest.ini veya başka setup.cfg dosyalarınız olup olmadığını kontrol edin. Nasıl çağırıyorsun py.test?


1
Ben var setup.cfgdüzgün ile [pytest]iç ve norecorsedirs ama göz ardı görünüyor ve bunun yerine tüm dosyalar için bakacağız.
sorin

8

Benim durumumda sorun, eksik joker karakterdi. Aşağıdakiler benim için çalışıyor:

[tool:pytest]
norecursedirs = subpath/*

oysa sadece norecursedirs = subpathyapmadı.


Burada aynı. Yine de çok garip bir davranış.
azmeuk


0

Kullanmak için pytest.ini(hangi toxdurumda kullanmadığınız sürece önerilir tox.ini) pytestile arayın pytest -c pytest.ini.

Benim örnek önlemek için not_me_1.pyve not_me_2.pygelen benim test veya linted edilen pytest.iniaşağıdaki gibidir:

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

[pycodestyle]
ignore = not_me_* ALL

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.