Généralement, j'ai deux classes de test qui partagent tous les cas de test, à l'exception de la classe setup_class et teardown_class. Les deux classes de test exécutent les mêmes tests d'opération client vers deux serveurs différents qui doivent être configurés différemment. Et selon où/quand le test est exécuté, il se peut que je souhaite ignorer certains tests car ce serveur pourrait ne pas être disponible. Je viens donc avec un design:Dans pytest, skipif ne fonctionne pas comme prévu si la classe de test est une sous-classe
class AllTests:
def test_1(self):
...
def test_2(self):
...
@pytest.mark.skipif(condition1)
class TestA(AllTests):
@classmethod
def setup_class(cls):
...
@classmethod
def teardown_class(cls):
...
@pytest.mark.skipif(condition2)
class TestB(AllTests):
@classmethod
def setup_class(cls):
...
@classmethod
def teardown_class(cls):
...
Il fonctionne très bien si aucune classe est ignorée. Cependant, si la condition 1 est remplie et que TestA est ignorée, les fonctions de test dans AllTests ne fonctionneront pas non plus pour TestB (ce qui n'est évidemment pas ce que je veux!).
Alors, comment résoudre ce problème?
Ou existe-t-il d'autres conceptions répondant à mes besoins (classes de test qui partagent tous les cas de test excepté les classes setup_class et teardown_class et qui devraient pouvoir être ignorées)? Est-ce que "parametrize" est utilisable? J'ai essayé mais je ne peux pas trouver les bons codes :(
Peut-être pouvez-vous expliquer plus pourquoi vous voulez faire cela, e.h. votre condition de saut, vos données etc. –
@NilsWerner J'ai ajouté qu'en haut ~ –