... e un pony! No sul serio. Sto cercando un modo per organizzare test che "funziona". La maggior parte delle cose funziona, ma non tutti i pezzi si incastrano. Quindi ecco cosa voglio:Rilevamento test Python con doctest, copertura e parallelismo
- Avendo rilevato automaticamente i test. Questo include doctest. Si noti che la somma dei doctest non deve apparire come un singolo test. (non è ciò che py.test --doctest-modules fa)
- Essere in grado di eseguire test in parallelo. (Qualcosa come py.test -n da xdist)
- Generazione di un report di copertura.
- Make
python setup.py test
solo lavoro.
Il mio approccio attuale prevede una directory tests
e load_tests protocol. Tutti i file contenuti sono denominati come test_*.py
. Questo rende python -m unittest discover
solo lavoro, se creo un file test_doctests.py
con il seguente contenuto.
import doctest
import mymodule1, mymodule2
def load_tests(loader, tests, ignore):
tests.addTests(doctest.DocTestSuite(mymodule1))
tests.addTests(doctest.DocTestSuite(mymodule2))
return tests
Questo approccio ha anche la testa che si può usare setuptools e fornire .
Tuttavia questo approccio ha alcuni problemi.
- coverage.py si aspetta di eseguire uno script. Quindi non posso usare la scoperta di unittest2 qui.
- py.test non esegue le funzioni load_tests, quindi non trova i doctest e l'opzione
--doctest-modules
è una merda. - nosetests esegue le funzioni
load_tests
ma non fornisce alcun parametro. Questo sembra totalmente rotto sul lato del naso.
Come posso far funzionare meglio le cose o risolvere alcuni dei problemi sopra riportati?
Bello. La tua domanda era solo la risposta che stavo cercando. :-) Per quanto riguarda coverage.py: usare 'coverage -m unittest2 discover' dovrebbe funzionare (almeno lo fa per unittest' in Py2.7). –