Fixture Teardowns

Introduktion till testning i Python

Alexander Levin

Data Scientist

Vad är en fixture teardown

  • Fixture Teardown – en process för att städa upp ("riva ned") resurser som tilldelades eller skapades under konfigurationen av en testmiljö.

Kom ihåg "picknick"-analogin:

  1. Bjud in vänner och förbered maten
  2. Ha kul!
  3. Städa upp – det är teardown
Introduktion till testning i Python

Varför använda teardowns

Det är viktigt att rensa miljön efter ett test. Utan teardown kan det uppstå allvarliga problem:

  • Minnesläckor
  • Låg körningshastighet och prestandaproblem
  • Ogiltiga testresultat
  • Fel och avbrott i pipeline
Introduktion till testning i Python

När ska du använda det

När du bör använda:

  • Stora objekt
  • Fler än ett test
  • Användning av autouse

När det inte är nödvändigt:

  • Ett enkelt skript med ett enda test
Introduktion till testning i Python

Lat evaluering i Python

  • yield – ett nyckelord i Python som används för att skapa generatorer
# 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
Introduktion till testning i Python

Hur du använder det

Så här använder du det:

  • Ersätt return med yield
  • Placera teardown-koden efter yield
  • Se till att konfigurationskoden enbart finns före yield
Introduktion till testning i Python

Teardown-exempel

@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
Introduktion till testning i Python

Sammanfattning

  • Definition: Fixture Teardown – en process för att rensa resurser som tilldelades under konfigurationen.
  • Användning:
    • Nyckelordet yield i stället för return
    • Teardown-kod efter yield
  • Fördelar:
    • Förhindrar programvarufel
    • Förhindrar prestandaförsämringar
  • När du ska använda det: Alltid, när du har fler än ett test!
Introduktion till testning i Python

Nu kör vi en övning!

Introduktion till testning i Python

Preparing Video For Download...