2012-05-29 23 views
13

Próbuję uruchomić py.test na moim pakiecie, ale próbuje przeanalizować setup.py z katalogu głównego projektu, nawet jeśli próbowałem go wykluczyć.BŁĄD zbieraniem pliku setup.py podczas próby uruchomienia py.test?

Muszę pobrać testy z plików * .py, ponieważ klasy testowe są zawarte w modułach.

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

Jeszcze kiedy biegnę py.test da mi ERROR collecting setup.py który już wykluczone.

/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 

Odpowiedz

19

można skonfigurować opcję --ignore do pytest.ini konfiguracji jak to może:

addopts = --ignore=setup.py 

które powinny pomóc, jeśli są w katalogu głównym i chcesz py.test do zignoruj ​​plik setup.py.

+0

Cholera, to znaczy, że jeśli mam inny plik 'setup.py', to również zostanie dołączony. Ponadto, toksyk nie jest w stanie wyszukać pliku tox.ini w katalogach nadrzędnych ?! – sorin

+1

Aby uniknąć dołączania innych plików setup.py, myślę, że pytest.ini potrzebuje sposobu na określenie dokładnych lokalizacji, takich jak --ignore = {inidir} /setup.py. – hpk42

2

Od docs (oraz nazwa zmiennej) to wygląda norecursedirs przeskakuje tylko katalogi, więc od setup.py jest plikiem, umieszczając ją w norecursedirs nie ma żadnego wpływu.

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

+0

Dzięki, za zauważając go. Wciąż to nie rozwiązuje mojego problemu. Z tego założę, że niemożliwe jest uniemożliwienie 'py.test' załadowania' setup.py', jeśli chcesz odszukać '* .py'. Nadal pojawia się błąd, ponieważ 'py.test' próbuje wykonać' setup.py'. Być może jest coś, co mogę zrobić dzięki setup.py, aby był przyjazny dla 'py.test'. – sorin

0

W rozwiązaniu Jedi rozwiązaliśmy to, dodając plik conftest.py z zawartością collect_ignore = ["setup.py"]. To sprawia, że ​​"magicznie" działa.

IMHO py.test powinien ułatwić ignorowanie setup.py, ponieważ jest to bardzo typowy przypadek użycia.

1

W pytest docs mieć odpowiedź pochowany dala here. Umieść plik conftest.py w katalogu głównym projektu, który zawiera pliki, które chcesz pytest ignorować:

Jednak wiele projektów będzie miała setup.py które nie chcą być importowane. Co więcej, pliki mogą być importowane tylko przez określoną wersję pythona. W takich przypadkach można określić dynamicznie pliki mają być ignorowane przez wystawianie ich w conftest.py pliku:


# content of conftest.py 
import sys 

collect_ignore = ["setup.py"]