Aby dać nieco wymyślony przykład, powiedzmy, że chcę przetestować, czy funkcja zwraca dwie liczby i że pierwsza jest mniejsza niż druga:
def test_length():
result = my_function()
assert len(result) == 2
def test_order()
a, b = my_function()
assert a < b
Tutaj, jeśli test_lengthzawiedzie, to test_orderrównież zawiedzie. Czy najlepiej jest pisać test_length, czy pomijać?
EDYCJA: zauważ, że w tej sytuacji oba testy są w większości niezależne od siebie, każdy może być uruchomiony w izolacji lub może być uruchomiony w odwrotnej kolejności, to nie ma znaczenia. Więc żadne z tych wcześniejszych pytań
- Jak powinienem przetestować funkcjonalność funkcji korzystającej z innych funkcji?
- Czy potrzebuję testu jednostkowego, jeśli mam już test integracyjny?
- Jak ustrukturyzować testy, w których jeden test jest konfiguracją innego testu?
- Jak zarządzać zależnością sukcesu między testami jednostkowymi
jest duplikatem powyższego.
Awywołania Bi wyniki zwracają ten sam wynik, powinieneś przetestować oba Ai B”. Chodzi raczej o nakładanie się testów , a nie o testowane funkcje. (Chociaż jest to mylące, ponieważ obecnie są nazywane).
lambda: type('', (), {'__len__': lambda self: 2})()przejdzie pierwszy, ale nie drugi.