web-dev-qa-db-fra.com

Comment échouer un python unittest dans setUpClass?

Je fais quelques tests avec python et quelques vérifications de pré-test dans setUpClass. Comment puis-je lancer un unitest-fail dans le setUpClass, comme exemple simple suivant:

class MyTests(unittest.TestCase):

    @classmethod
    def setUpClass(cls):    
        unittest.TestCase.fail("Test")

    def test1(self):
        pass

if __name__ == '__main__':
    unittest.main()

donne l'erreur TypeError: unbound method fail() must be called with TestCase instance as first argument (got str instance instead).

Je comprends que l'erreur que j'obtiens car échec est une méthode d'instance, et je n'ai pas encore d'instance de MyClass. Utiliser une instance à la volée comme

unittest.TestCase().fail("Test")

ne fonctionne pas non plus, car unittest.TestCase n'a lui-même aucun test. Des idées sur la façon d'échouer tous les tests dans MyClass, lorsqu'une condition dans setUpClass n'est pas remplie?

Question de suivi: existe-t-il un moyen de voir les tests dans setUpClass?

32
Alex

self.fail("test") mis dans votre méthode d'instance setUp échoue à tous les tests

Je pense que la façon la plus simple de le faire au niveau de la classe est de créer une variable de classe pour quelque chose comme:

@classmethod
def setUpClass(cls):
   cls.flag = False

def setUp(self):
   if self.flag:
       self.fail("conditions not met")

J'espère que c'est ce que vous voulez.

41
Raufio

L'utilisation d'une assertion simple devrait fonctionner

assert False, "I mean for this to fail"
31
Greg