Organisering og kørsel af tests med pytest
Stryg for at vise menuen
Når du ønsker at skrive ren, udtryksfuld og let vedligeholdelig testkode i Python, er pytest et populært valg. I modsætning til det indbyggede unittest-framework, som følger en fast, klassebaseret struktur og kræver specifikke assertionsmetoder som self.assertEqual, tillader pytest dig at bruge almindelige Python assert-udsagn i simple funktioner. Dette reducerer markant mængden af standardkode og gør dine tests mere overskuelige, da du ikke længere behøver at indpakke logik i komplekse klassehierarkier eller huske adskillige framework-specifikke assertionsnavne blot for at verificere et simpelt resultat.
En af de mest kraftfulde funktioner i pytest er dets testopdagelsessystem. Ved blot at køre pytest i din projektmappe vil det automatisk finde alle filer, der matcher mønstrene test_*.py eller *_test.py, og eksekvere alle funktioner i disse filer, der starter med test_. Det betyder, at du ikke manuelt behøver at angive, hvilke tests der skal køres – pytest håndterer det for dig.
En anden vigtig fordel er brugen af fixtures. Fixtures håndterer arbejdet med at forberede og rydde op i de ressourcer, dine tests har brug for, såsom midlertidige filer eller databaselinks, på en måde der er nem at genbruge. Du dekorerer blot en funktion med @pytest.fixture og anmoder derefter om den som input i dine testfunktioner. Dette holder din kode modulær og forhindrer gentagelse af den samme opsætningslogik.
For at komme i gang med pytest skal du først installere det. Brug følgende kommando i din terminal:
pip install pytest
Dette vil downloade og installere den nyeste version af pytest, så du straks kan begynde at skrive og køre dine tests.
Her er en praktisk demonstration af, hvordan du bruger det til at skrive funktionsbaserede tests og definere genanvendelige fixtures.
import pytest
# A simple function to test
def add(a, b):
return a + b
# Define a fixture that provides test data
@pytest.fixture
def sample_numbers():
return (3, 5)
# Test function using the fixture
def test_add_with_fixture(sample_numbers):
a, b = sample_numbers
result = add(a, b)
assert result == 8
# Another simple test function
def test_add_negative_numbers():
assert add(-2, -4) == -6
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat