J'aimerais ajouter quelques choses à ce que fait la unittest.TestCase
classe lors de son initialisation, mais je n'arrive pas à comprendre comment le faire.
En ce moment, je fais ceci:
#filename test.py
class TestingClass(unittest.TestCase):
def __init__(self):
self.gen_stubs()
def gen_stubs(self):
# Create a couple of tempfiles/dirs etc etc.
self.tempdir = tempfile.mkdtemp()
# more stuff here
Je souhaite que tous les stubs ne soient générés qu'une seule fois pour l'ensemble de ces tests. Je ne peux pas utiliser setUpClass()
parce que je travaille sur Python 2.4 (je n'ai pas pu le faire fonctionner sur python 2.7 non plus).
Qu'est-ce que je fais de mal ici?
J'obtiens cette erreur:
`TypeError: __init__() takes 1 argument (2 given)`
... et d'autres erreurs lorsque je déplace tout le code stub __init__
lorsque je l'exécute avec la commande python -m unittest -v test
.
python
unit-testing
brouiller
la source
la source
Réponses:
Essaye ça:
Vous remplacez les
TestCase
's__init__
, vous pouvez donc laisser la classe de base gérer les arguments à votre place.la source
setUp
plutôt que passer outre__init__
?unittest.TestCase.__init__(self,*args,**kwargs)
au lieu desuper(TestingClass, self).__init__(*args, **kwargs)
Je voulais juste ajouter quelques clarifications sur le remplacement de la fonction init de
La fonction sera appelée avant chaque méthode de votre classe de test. Veuillez noter que si vous souhaitez ajouter des calculs coûteux qui doivent être effectués une fois avant d'exécuter toutes les méthodes de test, veuillez utiliser la méthode de classe SetUpClass
Cette fonction sera appelée une fois avant toutes les méthodes de test de la classe. Voir
setUp
pour une méthode qui est appelée avant chaque méthode de test.la source
Installez unittest2 et utilisez unittest de ce package.
puis utilisez la classe setupModule / tearDownModule ou setupClass / tearDown pour une logique d'initialisation spéciale
Plus d'infos: http://www.voidspace.org.uk/python/articles/unittest2.shtml
Il est également fort probable que vous créez un test d'intégration plus qu'un test unitaire. Choisissez un bon nom pour les tests afin de les différencier ou mettez-les dans un module de conteneur différent.
la source