Sono nuovo di pytest e sto provando a convertire alcuni script di test funzionali in quelli che funzionano bene con pytest. Il mio modulo ha tipi di errore personalizzati e sto cercando di utilizzare il metodo "con pytest.raises() as excinfo". Questo è un pacchetto scientifico/numerico e ho bisogno di verificare che certi metodi siano coerenti quando vengono chiamati, quindi non posso semplicemente approfondire le cose di livello inferiore. Grazieutilizzando pytest.raises per rilevare l'errore personalizzato previsto
13
A
risposta
27
Che cosa si intende interrompere importando l'eccezione specifica e utilizzandola nell'istruzione with
pytest.raises? Perché non funziona? Sarebbe più utile se potessi fornire maggiori dettagli su quale problema stai affrontando.
# your code
class CustomError(Exception):
pass
def foo():
raise ValueError('everything is broken')
def bar():
raise CustomError('still broken')
#############
# your test
import pytest
# import your module, or functions from it, incl. exception class
def test_fooErrorHandling():
with pytest.raises(ValueError) as excinfo:
foo()
assert excinfo.value.message == 'everything is broken'
def test_barSimpleErrorHandling():
# don't care about the specific message
with pytest.raises(CustomError):
bar()
def test_barSpecificErrorHandling():
# check the specific error message
with pytest.raises(MyErr) as excinfo:
bar()
assert excinfo.value.message == 'oh no!'
def test_barWithoutImportingExceptionClass():
# if for some reason you can't import the specific exception class,
# catch it as generic and verify it's in the str(excinfo)
with pytest.raises(Exception) as excinfo:
bar()
assert 'MyErr:' in str(excinfo)
Problemi correlati
- 1. IIS 404 Errore personalizzato non funzionante come previsto
- 2. rilevare elementi traboccano utilizzando jQuery
- 3. Messaggio di eccezione personalizzato utilizzando JUnit assertEquals?
- 4. Formato previsto per EventLogQuery?
- 5. WhiteSpace personalizzato utilizzando Haskell Parsec
- 6. utilizzando modernizr per rilevare vh, vw con calc
- 7. utilizzando preg_match per rilevare i caratteri persiani (farsi) nella stringa
- 8. utilizzando deleter personalizzato con unique_ptr
- 9. Personalizzato 404 utilizzando Spring DispatcherServlet
- 10. Come rilevare lo sbadiglio utilizzando Open CV
- 11. OpenCV Android utilizzando MatOfKeyPoint e feature2d rilevare
- 12. Come rilevare IE7 e IE8 utilizzando jQuery.support
- 13. serializzatore personalizzato - deserializzatore utilizzando GSON per un elenco di BasicNameValuePairs
- 14. 'Nessuna istanza UICollectionViewLayoutAttributes per -layoutAttributesForItemAtIndexPath' errore utilizzando personalizzato UICollectionViewLayout
- 15. Utilizzando Django auth UserAdmin per un modello di utente personalizzato
- 16. Test JUnit per un timeout previsto
- 17. Carattere personalizzato per android.support.design.widget.TabLayout
- 18. "Token previsto" utilizzando il generatore di parser di limone
- 19. Rilevare gruppi di pixel bianchi di un'immagine utilizzando OpenCV
- 20. Errore "Oggetto previsto" utilizzando jQuery solo in IE8
- 21. Xamarin.Forms UserControl utilizzando XAML e renderer personalizzato
- 22. Dizionario personalizzato per Tesseract
- 23. Ordinamento di CollectionViewSource utilizzando IComparer personalizzato
- 24. Ansible Utilizzando personalizzato ssh config file
- 25. filigrana di input testo utilizzando bindingHandler personalizzato
- 26. Utilizzando std :: set personalizzato di confronto
- 27. Confuso utilizzando unique_ptr e un deleter personalizzato
- 28. utilizzando il marshaller personalizzato in F #
- 29. Android - Utilizzando SurfaceView personalizzato nel layout XML
- 30. Implementa ListView espandibile utilizzando l'adattatore personalizzato
Sembra che il tuo ultimo 'con py.test.raises' dovrebbe essere' con pytest.raises' –
@IanHunter aggiornato ora, grazie (si può dire sto ancora utilizzando la versione 'py.test':)) – pfctdayelise
Per python3: 'assert str (excinfo.value) == 'tutto è rotto'' – incognick