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
Arrangeutworzyć plik ww katalogu tymczasowymActapply_plan() / undo()Assertplik na nowym luboryginalnej lokalizacji

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
Otwórz praktykę →