Rozdział 23 · Część V · Sprawdzamy i automatyzujemy
Sprawdź przeprowadzkę i anulowanie
Każdy krok — przesunięcie, cofnięcie, konflikt przy cofnięciu — sprawdza osobny test, a nie jeden ogólny scenariusz.
SafeSort · Część 5 z 6Testy i CI
Sprawdzanie ruchu pliku jest trudniejsze niż sprawdzanie czystej funkcji: musisz stworzyć Pliki, zastosuj plan, upewnij się, że są w nowym miejscu, i dopiero wtedy Sprawdź anulowanie. Każdy krok jest sprawdzany osobnym testem, a nie jednym wielkim scenariuszem — Dzięki temu znacznie wyraźniej widać, co dokładnie jest uszkodzone, jeśli test nie przejdzie.
tests/test_executor.py
def test_apply_plan_moves_file_to_destination(tmp_path):
source = tmp_path / "otchet.pdf"
source.write_text("...")
destination = tmp_path / "Sorted" / "documents" / "otchet.pdf"
plan = SortPlan(root=tmp_path, operations=(MoveOperation(source, destination),))
results = apply_plan(plan)
assert results[0].completed is True
assert not source.exists()
assert destination.exists()
Test anulowania buduje plan, stosuje go, a następnie wywołuje undo()
i weryfikuje, że plik dokładnie pochodzi z miejsca:
tests/test_manifest.py
def test_undo_restores_original_location(tmp_path):
source = tmp_path / "otchet.pdf"
source.write_text("...")
plan = build_plan(scan(tmp_path, Config()), tmp_path, Config())
moves = apply_plan(plan)
manifest_obj, _ = write_manifest(tmp_path, moves)
result = undo(manifest_obj)
assert source.exists()
assert result.conflicts == ()
Test konfliktu anulowania — nie mniej ważny niż test udanego anulowania
Sam test „cofnij działa”
undo() — i sprawdza, że SafeSort odmówił jego nadpisania, a nie sprawdza tylko „szczęśliwą ścieżkę”.Praktyka: Testowanie ruchu i anulowanie
Potrzebny jest dostęp do prawdziwego systemu plików – uruchamianego lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie