Używanie py.test, dwa testy o tym samym nazwie w innym katalogu powodują niepowodzenie py.test. Dlaczego? Jak mogę to zmienić bez zmiany nazwy wszystkich testów?py.test - niepowodzenie testu testowego, gdy testy w różnych katalogach są nazywane tymi samymi
Aby powielić zrobić:
; cd /var/tmp/my_test_module
; mkdir -p ook/test
; mkdir -p eek/test
; touch ook/test/test_proxy.py
; touch eek/test/test_proxy.py
; py.test
============================= test session starts ==============================
platform linux2 -- Python 2.7.3 -- pytest-2.2.4
collected 0 items/1 errors
==================================== ERRORS ====================================
___________________ ERROR collecting ook/test/test_proxy.py ____________________
import file mismatch:
imported module 'test_proxy' has this __file__ attribute:
/home/ygolanski/code/junk/python/mymodule/eek/test/test_proxy.py
which is not the same as the test file we want to collect:
/home/ygolanski/code/junk/python/mymodule/ook/test/test_proxy.py
HINT: remove __pycache__/.pyc files and/or use a unique basename for your test file modules
=========================== 1 error in 0.01 seconds ============================
Zgadzam się, że wymaganie __init__.py ma sens. Jeśli test nie jest w pakiecie, to jest to zasadniczo moduł najwyższego poziomu (w OP, test_proxy) i powinien być tylko jeden. Umieszczając moduły testowe w odpowiednich pakietach (ook i eek), zapewnia on odpowiednią przestrzeń nazw testów. Mówię, że status quo jest najlepszy. Może to złagodzić ból związany z komunikatem o błędzie dotyczącym tego pytania lub czymś w dokumentach wyjaśniającym rozumowanie i technikę rozwiązania problemu. –
Po prostu notatka, że py.test docs specjalnie odradza wstawianie '__init __. Py' w katalogach testowych: _" unikaj '__init __. Py' plików w katalogach testowych, w ten sposób twoje testy mogą łatwo działać z zainstalowaną wersją mypkg, niezależnie od tego, czy zainstalowany pakiet zawiera testy, czy nie "_. Zaczerpnięte z [pytest.org - Good Integration Practices] (http://pytest.org/latest/goodpractises.html#choosing-a-test-layout-import-rules). – famousgarkin
Aktualizacja: Rekomendacja w komentarzu @ famousgarkin powyżej i odpowiedź (https://stackoverflow.com/a/21942491/260303) wydaje się już nie być w dokumentach (przynajmniej wyszukiwanie "unikaj" nie wywołuje cytatu powyżej): https://docs.pytest.org/en/latest/goodpractices.html#tests-as-part-of-application-code. W rzeczywistości przykłady w tym łączu pokazują '__init __. Py' w katalogach testowych, więc wydaje się, że zaakceptowana odpowiedź jest poprawna. –