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_length
ou 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.
A
appels B
et renvoie le même résultat, si vous testez les deux A
et 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.