Làm thế nào để yêu cầu py.test bỏ qua các thư mục nhất định?


91

Tôi đã cố gắng sử dụng norecursedirstùy chọn bên trong setup.cfg để nói với py.test không thu thập các bài kiểm tra từ một số thư mục nhất định nhưng có vẻ như nó bỏ qua nó.

[tool:pytest]
norecursedirs=lib/third

Khi tôi chạy, py.testtôi thấy nó nhận được các bài kiểm tra từ bên trong như thế nào lib/third!


Có vẻ như tôi có py.testpytestcả hai đều đang chạy thử nghiệm và là những con thú khác nhau. Kỳ lạ nhưng pytestlà một trong những thất bại vì nó không tải các loại trừ từ [pytest].
sorin

1
pytestlà từ logilab. Bạn muốn py.test.
ecatmur

3
cũng thử làmnosecuredirs=lib/third/*
intelis

có cách nào để bỏ qua một số thư mục trong chính tập lệnh bằng mã không?
bicepjai

2
kết thúc ở đây bởi vì tôi tò mò tại sao ứng dụng web của tôi trong quá trình phát triển cục bộ lại quá chậm ... may mắn [pytest] norecursedirs = resourcestrong pytest.inilàm một thủ thuật 💪!
andilabs

Câu trả lời:


85

py.test --ignore=somedir đã làm cho tôi


5
--ignorecó thể được chỉ định nhiều lần để bỏ qua nhiều thư mục
phượng hoàng

Cách bỏ qua các bài kiểm tra nhất định thay vì thư mục
Rajat jain

Bạn có thể sử dụng -ktùy chọn như một câu trả lời khác bên dưới hiển thị. Xem "Chạy thử nghiệm theo biểu thức từ khóa" trên docs.pytest.org/en/latest/… . Dấu hiệu cũng có thể hữu ích ở đây. Đánh dấu các bài kiểm tra của bạn là "chậm", v.v. và sau đó sử dụng-k "not slow"
shadfc

1
Cũng có thể sử dụng--ignore-glob để bỏ qua các đường dẫn tệp thử nghiệm dựa trên các ký tự đại diện kiểu shell Unix. Ví dụ: --ignore-glob=**/sandbox/*sẽ bỏ qua tất cả các tệp trong bất kỳ sandboxthư mục nào .
Ngày

28

Nếu bạn có một số thư mục với các cha mẹ khác nhau, bạn có thể chỉ định các --ignoretham số khác nhau :

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

  • tùy chọn mới: --ignore sẽ ngăn chặn đường dẫn được chỉ định khỏi bộ sưu tập.
    Có thể được chỉ định nhiều lần.

24

Tôi giải quyết những bí ẩn: Nếu một phần pytest được tìm thấy tại một trong những tập tin cấu hình có thể ( pytest.ini, tox.inisetup.cfg), pytest sẽ không tìm kiếm bất kỳ người khác vì vậy hãy chắc chắn rằng bạn xác định các tùy chọn py.test trong một tập tin duy nhất.

Tôi sẽ đề nghị sử dụng setup.cfg.


8
Tại sao setup.cfg? Tài liệu hiện tại dường như đề xuất hai cái kia
jebob

tôi nghĩ điều quan trọng cần đề cập là nếu bạn muốn sử dụng một .initệp, bạn cần phải chỉ định tệp đó pytest -c pytest.ini. vì một số lý do setup.cfgnội dung đã được chọn tự động.
therightstuff

17

Bạn có thể dùng

py.test -k 'not third'

loại trừ tất cả nội dung thư mục 'thứ ba'.


11

norecursedirsnên làm việc. Kiểm tra xem bạn có tệp pytest.ini hay các tệp setup.cfg khác không. Bạn đang gọi py.testnhư thế nào?


1
Tôi có setup.cfgvới các trình mã hóa thích hợp [pytest]và không có mã bên trong nhưng nó dường như bị bỏ qua, và thay vào đó nó sẽ tìm kiếm tất cả các tệp.
sorin

8

Trong trường hợp của tôi, vấn đề là thiếu ký tự đại diện. Những điều sau đây phù hợp với tôi:

[tool:pytest]
norecursedirs = subpath/*

trong khi chỉ là norecursedirs = subpathkhông.


Ở đây cũng vậy. Hành vi rất kỳ lạ mặc dù.
azmeuk


0

Để sử dụng pytest.ini(được khuyến nghị, trừ khi bạn đang sử dụng toxtrong trường hợp đó tox.inisẽ hợp lý), hãy gọi pytestvới pytest -c pytest.ini.

Để ngăn mẫu của tôi not_me_1.pynot_me_2.pykhông bị kiểm tra hoặc bị lem, của tôi pytest.ininhư sau:

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

[pycodestyle]
ignore = not_me_* ALL

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.