Pour donner un exemple légèrement artificiel, disons que je veux tester qu'une fonction renvoie deux nombres et que le premier est plus petit que le second:
def test_length():
result = my_function()
assert len(result) == 2
def test_order()
a, b = my_function()
assert a < b
Ici, en cas d' test_lengthéchec, test_orderéchouera également. Est-ce une meilleure pratique d'écrire test_lengthou de l'ignorer?
EDIT: notez que dans cette situation, les deux tests sont pour la plupart indépendants l'un de l'autre, chacun peut être exécuté de manière isolée, ou ils peuvent être exécutés dans l'ordre inverse, cela n'a pas d'importance. Donc, aucune de ces anciennes questions
- Comment dois-je tester la fonctionnalité d'une fonction qui utilise d'autres fonctions en elle?
- Ai-je besoin d'un test unitaire si j'ai déjà un test d'intégration?
- Comment structurer les tests où un test est la configuration d'un autre test?
- Comment gérer la dépendance du succès entre les tests unitaires
est un double de celui ci-dessus.
Aappels Bet renvoie le même résultat, si vous testez les deux Aet B". Il s'agit plus du chevauchement des tests que des fonctions testées. (Bien que ce soit déroutant car ils sont actuellement nommés).
lambda: type('', (), {'__len__': lambda self: 2})()passera la première, mais pas la seconde.