2012-05-29 29 views
13

Tôi đang cố gắng chạy py.test trên gói của mình nhưng nó đang cố gắng phân tích cú pháp setup.py từ thư mục gốc của dự án ngay cả khi tôi đã cố gắng loại trừ nó.ERROR thu thập setup.py trong khi cố gắng chạy py.test?

Tôi cần thu thập các bài kiểm tra từ tệp * .py vì các lớp kiểm tra được bao gồm trong các mô-đun.

# setup.cfg 
[pytest] 
norecursedirs = .svn _build tmp* lib/third lib *.egg bin distutils setup.py 
python_files = *.py 

Vẫn khi tôi chạy py.test nó sẽ cung cấp cho tôi ERROR collecting setup.py mà tôi đã loại trừ.

/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/core.py:140: in setup 
>   raise SystemExit, gen_usage(dist.script_name) + "\nerror: %s" % msg 
E   SystemExit: usage: py.test [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] 
E    or: py.test --help [cmd1 cmd2 ...] 
E    or: py.test --help-commands 
E    or: py.test cmd --help 
E   
E   error: no commands supplied 

Trả lời

19

Bạn có thể cấu hình tùy chọn --ignore để cấu hình pytest.ini của bạn như có lẽ đây:

addopts = --ignore=setup.py 

mà nên giúp đỡ nếu bạn đang ở trong thư mục gốc và muốn py.test để bỏ qua tệp setup.py.

+0

Chết tiệt, điều đó có nghĩa là nếu tôi có 'setup.py' khác, nó cũng sẽ được đưa vào. Ngoài ra, độc tố không thể tìm độc tố.ini trong thư mục cha?! – sorin

+1

Để tránh các tệp setup.py khác được bao gồm, tôi nghĩ pytest.ini sẽ cần một cách để cho phép chỉ định các vị trí chính xác như --ignore = {inidir} /setup.py hoặc như vậy. – hpk42

2

Từ các tài liệu (và tên của biến) có vẻ như norecursedirs chỉ bỏ qua các thư mục, vì vậy kể từ setup.py là một tập tin, đặt nó trong norecursedirs không có tác dụng.

http://pytest.org/latest/customize.html?highlight=norecursedirs#confval-norecursedirs

+0

Cảm ơn, cho phúc khảo nó. Tuy nhiên điều này không giải quyết được vấn đề của tôi. Từ những điều này tôi giả định rằng không thể ngăn chặn 'py.test' tải' setup.py' nếu bạn muốn tìm '* .py'. Vẫn còn lỗi xuất hiện vì 'py.test' đang cố gắng thi hành' setup.py'. Có lẽ có một cái gì đó tôi có thể làm với setup.py để làm cho nó 'py.test' thân thiện. – sorin

0

Trong Jedi chúng tôi đã giải quyết vấn đề này bằng cách thêm tệp conftest.py có nội dung là collect_ignore = ["setup.py"]. Điều đó làm cho nó "kỳ diệu" làm việc.

IMHO py.test nên dễ dàng bỏ qua setup.py, bởi vì đó là trường hợp sử dụng rất điển hình.

1

Các tài liệu pytest có câu trả lời chôn đi here. Đặt một tập tin conftest.py trong thư mục gốc của dự án của bạn liệt kê các tập tin bạn muốn pytest bỏ qua:

Tuy nhiên, nhiều dự án sẽ có một setup.py mà họ không muốn được nhập khẩu. Hơn nữa, có thể chỉ có các tệp có thể nhập bằng phiên bản python cụ thể. Đối với trường hợp này bạn có thể tự động xác định các tập tin để được bỏ qua bằng cách liệt kê chúng trong một tập tin conftest.py:


# content of conftest.py 
import sys 

collect_ignore = ["setup.py"] 

Các vấn đề liên quan