Je veux écrire un test pour établir qu'une exception n'est pas levée dans une circonstance donnée.
Il est simple de tester si une Exception est soulevée...
sInvalidPath=AlwaysSuppliesAnInvalidPath()
self.assertRaises(PathIsNotAValidOne, MyObject, sInvalidPath)
... mais comment faire le en face de .
Quelque chose comme ça, c'est ce que je cherche...
sValidPath=AlwaysSuppliesAValidPath()
self.assertNotRaises(PathIsNotAValidOne, MyObject, sValidPath)
9 votes
Vous pouvez toujours vous contenter de faire ce qui semble fonctionner dans le test. S'il y a une erreur, elle apparaîtra (comptée comme une erreur, plutôt que comme un échec). Bien sûr, cela suppose qu'il ne soulève pas n'importe quelle erreur, plutôt qu'un type d'erreur défini. Sinon, je suppose que vous devez écrire votre propre test.
2 votes
Duplicata possible de Python - test qui réussit lorsque l'exception n'est pas levée
0 votes
Il s'avère que l'on peut en fait mettre en place une
assertNotRaises
qui partage 90% de son code/comportement avecassertRaises
en environ ~30 lignes de code. Voir ma réponse ci-dessous pour les détails.0 votes
Je veux que cela me permette de comparer deux fonctions avec
hypothesis
pour s'assurer qu'ils produisent la même sortie pour tous les types d'entrée, tout en ignorant les cas où l'original lève une exception.assume(func(a))
ne fonctionne pas car la sortie peut être un tableau avec une valeur de vérité ambiguë. Donc je veux juste appeler une fonction et obtenirTrue
s'il n'échoue pas.assume(func(a) is not None)
ça marche je suppose0 votes
Cela répond-il à votre question ? Passer un unittest Python si une exception n'est pas levée