C'è un modo per velocizzare l'esecuzione ripetuta di py.test
? Sembra passare molto tempo a raccogliere i test, anche se specifichi quali file eseguire sulla riga di comando. So che non è un problema di velocità del disco, dal momento che l'esecuzione di pyflakes su tutti i file .py è molto veloce.Come velocizzare py.test
risposta
L'utilizzo dell'opzione norecursedirs
in pytest.ini o tox.ini consente di risparmiare molto tempo di raccolta, a seconda di quali altri file sono presenti nella directory di lavoro. Il mio tempo di raccolta è approssimativamente dimezzato per una serie di 300 test quando l'ho installato (0,34 vs 0,64).
Se stai già utilizzando tox come me, è solo bisogno di aggiungere quanto segue nel tox.ini:
[pytest]
norecursedirs = docs *.egg-info .git appdir .tox
è anche possibile aggiungere in un file pytest.ini free-standing.
La documentazione di pytest ha more details on py.test configuration files.
In aggiunta (o invece) è necessario configurare 'percorsi di test', ad esempio' testpaths = src/tests'. Quindi non è necessario saltare '.git',' .tox' ecc. – blueyed
Avevo lo stesso problema in cui stavo chiamando py.test
alla radice del mio progetto e i miei test erano tre sottodirectory in giù. La raccolta richiedeva 6-7 secondi prima di 0.4 secondi di esecuzione effettiva del test.
La mia soluzione inizialmente era quello di chiamare py.test
con il percorso relativo alle prove:
py.test src/www/tests/
Se facendo che accelera la vostra collezione anche, è possibile aggiungere il percorso relativo alle prove alla fine del addopts
impostazione nel pytest.ini
- ad esempio:
[pytest]
addopts = --doctest-glob='test_*.md' -x src/www/tests/
Questa è sceso il tempo di raccolta + di esecuzione fino a circa un secondo e ho potuto ancora chiamare py.test
come ero prima.
Un modo migliore è quello di configurare questo usando 'testpaths', cioè' testpaths = src/www/tests'. – blueyed
Con xdist è possibile parallelizzare le esecuzioni py.test. Permette persino di spedire test a macchine remote. Dipende dal tuo setup può accelerare un bel po ':)
Nel caso particolare in cui si esegue cygwin's python, la gestione dei file in stile unix è lenta. Vedi pytest.py test very slow startup in cygwin per come accelerare le cose in quella situazione speciale.
Se si dispone di un software antivirus in esecuzione, provare a spegnerlo. Ho avuto lo stesso identico problema. I test di raccolta sono stati incredibilmente lenti. Si è rivelato essere il mio software antivirus (Avast) che stava causando il problema. Quando ho disattivato il software antivirus, la raccolta dei test è stata eseguita circa cinque volte più velocemente. L'ho provato diverse volte, accendendo e spegnendo l'antivirus, quindi non ho dubbi che fosse la causa nel mio caso.
- 1. Come velocizzare i file_get_contents?
- 2. Come velocizzare questa query?
- 3. Come velocizzare Eclipse Juno?
- 4. Come velocizzare Pywikibot?
- 5. Come velocizzare rbind?
- 6. Progetti che utilizzano py.test
- 7. Come velocizzare jquery mobile/phonegap?
- 8. Come velocizzare i codici MATLAB?
- 9. Come velocizzare il compilatore gwt?
- 10. Come velocizzare il loop python
- 11. Come velocizzare la perforforazione automatica?
- 12. Come velocizzare questo codice Python?
- 13. py.test test parametrizing classes
- 14. Come monkeypatch python's datetime.datetime.now con py.test?
- 15. Come disabilitare un test usando py.test?
- 16. Come utilizzare più core con py.test?
- 17. Come mostrare gli avvisi in py.test
- 18. Come e dove py.test trova i fari
- 19. generando py.test test in python
- 20. registrazione all'interno di test py.test
- 21. py.test con Python2 e Python3
- 22. Esecuzione py.test con Xvfb conduzione
- 23. Come velocizzare il caricamento della schermata iniziale
- 24. Come velocizzare query corrente con indice
- 25. Come posso velocizzare la modalità Documento Emacs?
- 26. sklearn: Come velocizzare un vettore (es. Tfidfvectorizer)
- 27. Come velocizzare il rendering .NET winforms
- 28. Come velocizzare il tempo di collegamento C++
- 29. Come velocizzare l'esecuzione del test dei graal
- 30. Come velocizzare l'avvio di PowerShell nell'ambiente 4.0?
Sei sicuro che la fase di "raccolta" sia lenta? Per favore, prova a eseguire py.test con '--collectonly'. – alecxe
Sì, è una raccolta che è lenta. Posso vedere il conteggio delle raccolte iniziare da 0, andare a 2, quindi 7. Ho verificato di nuovo con '--collectonly'. Post raccolta l'esecuzione è quasi immediata. –
Ho un progetto con più di 400 test e la fase di raccolta è molto veloce. Inoltre ho conftest.py che aggiunge un sacco di magia, un sacco di 'parametrize's, fixtures e' pytest_generate_tests' che rendono la raccolta più lenta, nonostante questa raccolta sia veloce nel mio caso. Verifica di non avere il proprio codice che interagisce con la fase di raccolta di pytest e rallenta. In caso contrario, è possibile eseguire profiler come profiler di linea per vedere quale codice è lento. – spinus