J'ai besoin d'un peu d'aide pour corriger un décorateur pour unittest. Je ne suis pas sûr de savoir comment répondre aux exigences du test unitaire. L'idée de ce décorateur est de marquer le test comme expectedFailure SI True est passé. Dans le cas contraire, il permet au test de s'exécuter simplement. Ce décorateur fonctionne pour les fonctions de test, mais pas pour les définitions de classes.
import unittest
def expectedFailureIf(expFailure):
if expFailure:
return unittest.expectedFailure
return lambda func: func
@expectedFailureIf(GetCurrentOS() == kPlatMac) # Fails on Class
class someClass(unittest.TestCase):
#@expectedFailureIf(GetCurrentOS() == kPlatMac) # Works on Function
def test_sometestA(self):
assert True
def test_sometestB(self):
assert False
L'erreur que j'obtiens est que test_sometest() prend exactement 1 argument. La suppression du décorateur permet au test de s'exécuter. Déplacer le décorateur au sommet de la fonction permet au test de s'exécuter.
L'histoire... Une de mes plateformes fonctionne bien et l'autre non. Je veux permettre à une plateforme d'exécuter tous les tests tandis que l'autre plateforme sera marquée comme des échecs attendus. Bien sûr, je ne veux pas utiliser skip ou skip if. Puisque cela ne permettra pas à la plateforme valide de fonctionner. Les marquer comme des échecs attendus ne fonctionnera pas non plus puisque l'une des plateformes renverra un succès inattendu. Avec le expectedFailureIf() en place, chaque plateforme rapportera correctement et une fois que les choses seront corrigées, ces tests rapporteront un succès inattendu. Ce qui m'avertira lorsque les choses seront corrigées. Pour moi, cela semble être un meilleur résultat.