Pisanie pierwszych testów automatycznych
Testy działają SafeSort tylko w tymczasowym katalogu pytest – żaden z nich nie dotyka faktycznych plików użytkownika.
Wyobraźmy sobie: ktoś przypadkowo zepsuł klasyfikator — rozszerzenie
.PDF wielkimi literami nie jest już uznawany za dokument. Jak się o tym dowiedzieć bez
Sprawdzanie ręcznie za każdym razem?
Przywrócić normalizację rejestrów — i ten sam test potwierdza rozwiązanie:
Kod, który sam sprawdza inny kod i informuje, jeśli zachowanie zmieniło się niezauważalnie
dla człowieka, nazywa się automatycznym testem. W Python częściej
całkowite użytkowanie pytest.
pip install -e ".[dev]"
pytest tests/ -v
apply bezpośrednio ~/Downloads, przy pierwszym nieudanym uruchomieniu może uszczekać prawdziwe pliki. Wszystkie testy SafeSort uruchamiać w tymczasowym katalogu, który pytest sam tworzy i usuwa za pomocą wbudowanej funkcji tmp_path — jest przekazywany do funkcji testowej jako parametr regularny:from safesort.classifier import classify
from safesort.config import DEFAULT_EXTENSIONS
def test_classify_known_extension():
#Arrange: rozszerzenie i reguła klasyfikacji są już gotowe, nie trzeba nic tworzyć
# Act
rezultat = classify(".pdf", DEFAULT_EXTENSIONS)
# Assert
assert rezultat == "documents"
Trzy części — Arrange (przygotowanie), Act (wywołać),
Assert (sprawdzić) — pojawiają się prawie w każdym teście SafeSort. Funkcja
classify() jest dobrym pierwszym testem nie bez powodu: jest czysty, nie
dotyka systemu plików i nie zależy od niczego zewnętrznego. Następna strona jest przejmowana przez
Bardziej złożone testy to te, które faktycznie tworzą pliki w tymczasowym katalogu.
Krótko
- Test to kod, który sprawdza kod: wykonuje funkcję i porównuje wynik z oczekiwanym.
- tmp_path jest tymczasowym katalogiem, który pytest tworzy i usuwa dla każdego testu.
- Żaden SafeSort test nie ma dostępu do prawdziwego katalogu użytkowników, jak ~/Downloads.