Sto usando pytest. Ho due file in una directory. In uno dei file c'è un caso di test di lunga durata che genera un po 'di output. Nell'altro file c'è un caso di test che legge quell'output. Come posso garantire il corretto ordine di esecuzione dei due casi di test? C'è qualche alternativa oltre a mettere i casi di test nello stesso file nell'ordine corretto?Ordine di esecuzione del test case in pytest
risposta
In generale è possibile configurare il comportamento di praticamente qualsiasi parte di pytest utilizzando il suo well-specified hooks.
Nel proprio caso, si desidera l'hook "pytest_collection_modifyitems", che consente di riordinare i test raccolti sul posto.
Detto questo, sembra che ordinare i tuoi test sia più semplice - dopo tutto, questo è Python! Così ho scritto un plugin per ordinare test. Controlla il docs o installalo da pypi. In questo momento raccomando di usare @ pytest.mark.first e @ pytest.mark.second, o uno dei @ pytest.mark.order # marker, ma ho alcune idee su API più utili. Suggerimenti benvenuti :)
Hey. Grazie per aver creato questo plugin. Puoi modificarlo in modo tale da estrarre semplicemente le cifre finali come l'ordine. E.g Se dico @ pytest.mark.custom1, 1 dovrebbe essere l'ordine. Questo sarebbe di grande aiuto! –
Posso provare. Penso che v0.2 abbia questo comportamento con un marker "order", invece di marker arbitrari. Potresti scrivere questo come richiesta di funzionalità nella pagina github di order-order? https://github.com/ftobia/pytest-ordering –
Il link hooks dovrebbe andare a: http://pytest.org/latest/writing_plugins.html#well-specified-hooks –
Forse si può considerare l'utilizzo di plug-in dependency pytest, dove è possibile impostare le dipendenze di prova facilmente:
@pytest.mark.dependency()
def test_long():
pass
@pytest.mark.dependency(depends=['test_long'])
def test_short():
pass
In questo modo test_short
verrà eseguito solo se test_long
è successo e forza la sequenza di esecuzione anche.
Sopra non funziona per me per il sequenziamento degli ordini. Ad esempio: se si capovolge l'ordine. Cioè da molto tempo. In tal caso, viene saltato a lungo. – peaxol
C'è anche un plug-in pytest-ordering che sembra soddisfare le tue esigenze.
La risposta di Frank T. menziona già questo plugin ed è stata postata 3 anni prima di questa risposta. – Ave
uh, ma non ha menzionato il nome. questo è il motivo per cui mi sono persuaso del tutto. –
- 1. Come eseguire i test case JUnit in ordine sequenziale?
- 2. Come ottenere il nome del test case in JUnit 4 in fase di esecuzione?
- 3. Ruby - Esecuzione di test in ordine casuale con rake
- 4. Posso eseguire i test di esecuzione NUnit in ordine casuale?
- 5. Pytest - nessun test ha funzionato
- 6. Come rilevare quando il test test di pytest è fallito?
- 7. Task.ContinueWith ordine di esecuzione
- 8. Errore del test case nel sonar
- 9. Ordine di test Django TestCase
- 10. Posso eseguire line_profiler su un test di pytest?
- 11. Log4j in JUnit Test case
- 12. hook_preprocess_node() ordine di esecuzione
- 13. setup/teardown utilizzando conftest in pytest
- 14. UIautomator Test Case Android
- 15. Esecuzione Ordine di Middleware in laravel 5
- 16. junit test case generator
- 17. ordine insensetivo di case in SQLite in .net
- 18. DbContext SaveChanges Ordine di esecuzione Esecuzione
- 19. Come impostare la sequenza del test case in xUnità
- 20. Ordine di condizione di esecuzione in MySQL
- 21. RegisterStartupScript e ordine di esecuzione
- 22. AsyncTask Android - Ordine di esecuzione
- 23. @BeforeClass ed ereditarietà - ordine di esecuzione
- 24. ordine Controllo di esecuzione in angularjs
- 25. Ordine di esecuzione nell'elenco di inizializzazione del costruttore
- 26. Ordine di esecuzione hook_cron Drupal
- 27. Ordine di esecuzione per l'ApiController
- 28. Esecuzione del test di Django con setup.py test e tox
- 29. laravel 4.2: Test Case Autoloading
- 30. JUnit esegue i test case in sequenza?
in generale non è una buona idea avere casi di test dipendenti l'uno dall'altro. Se è necessario utilizzare gli stessi dati in 2 casi di test, perché non aggiungerlo alla sezione 'setup'? – Brad
Lo so. Non mi piace neanche ma in questo momento ne ho bisogno. – Kocka
Non voglio aggiungerlo alla sezione di installazione, perché ci vogliono circa 15-20 minuti. – Kocka