Utilizzando py.test, due test chiamato lo stesso nella directory diverse cause py.test a fallire. Perché? Come posso cambiare questo senza rinominare tutti i test?py.test - prova di fallimento scoperta quando i test in diverse directory sono chiamati lo stesso
Per duplicare fare:
; 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 ============================
Sono d'accordo che richiedono un __init__.py ha un senso. Se un test non è in un pacchetto, allora è essenzialmente un modulo di primo livello (nell'OP, test_proxy) e dovrebbe essercene solo uno. Inserendo i moduli di test in pacchetti rilevanti (ook ed eek), fornisce un giusto namespacing dei test. Dico che lo status quo è il migliore. Potrebbe alleviare un po 'di dolore avere il messaggio di errore link a questa domanda o qualcosa nei documenti che spiega il ragionamento e la tecnica per risolvere il problema. –
Solo una nota che documenti py.test consigliano in particolare contro la messa '__init __ py' nella directory di test:. _" Evitare '__init __ file py' nella tua directory di test In questo modo i test possono essere eseguiti facilmente contro una versione installata di miopacchetto,.. indipendentemente dal fatto che il pacchetto installato contenga o meno i test "_. Tratto da [pytest.org - Good Integration Practices] (http://pytest.org/latest/goodpractises.html#choosing-a-test-layout-import-rules-rules). – famousgarkin
Aggiornamento: La raccomandazione di commento @ di famousgarkin sopra e risposta (https://stackoverflow.com/a/21942491/260303) sembra non essere più nella documentazione (almeno la ricerca di "evitare di" non far apparire la citazione sopra): https://docs.pytest.org/en/latest/goodpractices.html#tests-as-part-of-application-code. In effetti, gli esempi in questo collegamento mostrano '__init __. Py' nelle directory di test, quindi sembra che la risposta accettata sia quella corretta. –