J’ai fait un simple cas de test :
et j’attends que le test soit concluant, mais je reçois d’exception :
J’ai pensé qu’assertRaises va passer car exception TypeError sera déclenchée ?
J’ai fait un simple cas de test :
et j’attends que le test soit concluant, mais je reçois d’exception :
J’ai pensé qu’assertRaises va passer car exception TypeError sera déclenchée ?
Si vous utilisez python2.7 ou ci-dessus, vous pouvez utiliser la capacité de assertRaises à être utilisé comme un gestionnaire de contexte et de faire:
with self.assertRaises(TypeError):
self.testListNone[:1]
Si vous utilisez python2.6 une autre façon, à côté de la donnée jusqu'à maintenant est d'utiliser unittest2 qui est un port de unittest nouvelle fonctionnalité pour python2.6, et vous pouvez le faire fonctionner à l'aide du code ci-dessus.
N. B: je suis un grand fan de la nouvelle fonctionnalité (SkipTest, test de la découverte ...) de unittest j'ai donc l'intention d'utiliser unittest2 autant que je le peux. Je vous conseille de faire de même, car il est beaucoup plus que ce unittest avec python2.6 <.
La manière habituelle d'utiliser assertRaises
est d'appeler une fonction:
self.assertRaises(TypeError, test_function, args)
pour tester que l'appel de la fonction test_function(args) soulève une exception TypeError.
Le problème avec self.testListNone[:1]
, c'est que Python évalue l'expression immédiatement, avant que l' assertRaises
méthode est appelée. La raison pourquoi test_function
et args
est passé en tant que distincte des arguments au self.assertRaises
est de permettre l' assertRaises
d'appel test_function(args)
depuis un try...except
bloc, permettant assertRaises
pour intercepter l'exception.
Depuis que vous avez définies self.testListNone = None
, et vous avez besoin d'une fonction d'appel, vous pouvez utiliser l'opérateur.itemgetter comme ceci:
import operator
self.assertRaises(TypeError, operator.itemgetter, (self.testListNone,slice(None,1)))
depuis
operator.itemgetter(self.testListNone,slice(None,1))
est un travail de longue haleine façon de dire self.testListNone[:1]
, mais qui le sépare de la fonction (operator.itemgetter
) de l'argumentation.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.