Teardowny w fiksturach

Wprowadzenie do testowania w Pythonie

Alexander Levin

Data Scientist

Czym jest teardown fiktury

  • Teardown fiktury — proces czyszczenia ("teardown") zasobów przydzielonych lub utworzonych podczas konfiguracji środowiska testowego.

Przypomnijmy analogię z piknikiem:

  1. Zapraszamy znajomych i przygotowujemy jedzenie
  2. Świetnie się bawimy!
  3. Sprzątamy — to właśnie teardown
Wprowadzenie do testowania w Pythonie

Dlaczego używać teardownów

Ważne jest czyszczenie środowiska po zakończeniu testu. Brak teardownu może prowadzić do poważnych problemów:

  • Wycieki pamięci
  • Niska szybkość wykonania i problemy z wydajnością
  • Nieprawidłowe wyniki testów
  • Błędy i awarie w potoku
Wprowadzenie do testowania w Pythonie

Kiedy używać

Kiedy używać:

  • Duże obiekty
  • Więcej niż jeden test
  • Użycie autouse

Kiedy nie jest to konieczne:

  • Jeden prosty skrypt z jednym testem
Wprowadzenie do testowania w Pythonie

Leniwe wartościowanie w Pythonie

  • yield — słowo kluczowe Pythona umożliwiające tworzenie generatorów
# Example of generator function
def lazy_increment(n):
    for i in range(n):
        yield i
f = lazy_increment(5)
next(f) # 0
next(f) # 1
next(f) # 2
Wprowadzenie do testowania w Pythonie

Jak używać

Jak używać:

  • Zastąp return przez yield
  • Umieść kod teardownu po yield
  • Upewnij się, że kod konfiguracji jest wyłącznie przed yield
Wprowadzenie do testowania w Pythonie

Przykład teardownu

@pytest.fixture
def init_list():
    return []

@pytest.fixture(autouse=True)
def add_numbers_to_list(init_list):
    # Fixture Setup
    init_list.extend([i for i in range(10)])
    # Fixture output
    yield init_list
    # Teardown statement
    init_list.clear()

def test_9(init_list):
    assert 9 in init_list
Wprowadzenie do testowania w Pythonie

Podsumowanie

  • Definicja: Teardown fiktury — proces zwalniania zasobów przydzielonych podczas konfiguracji.
  • Użycie:
    • Słowo kluczowe yield zamiast return
    • Kod teardownu po yield
  • Zalety:
    • Zapobiega awariom oprogramowania
    • Zapobiega spadkom wydajności
  • Kiedy używać: Zawsze, gdy mamy więcej niż jeden test!
Wprowadzenie do testowania w Pythonie

Czas na ćwiczenia!

Wprowadzenie do testowania w Pythonie

Preparing Video For Download...