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_length
zawiedzie, to test_order
ró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.
A
wywołania B
i wyniki zwracają ten sam wynik, powinieneś przetestować oba A
i 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.