Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Organisering og Kjøring av Tester med pytest | Testing with unittest and pytest
Python Strukturert Programmering

Organisering og Kjøring av Tester med pytest

Sveip for å vise menyen

Når du ønsker å skrive ren, uttrykksfull og lett vedlikeholdbar testkode i Python, er pytest et populært valg. I motsetning til det innebygde unittest-rammeverket, som følger en rigid, klassebasert struktur og krever spesifikke påstandsmetoder som self.assertEqual, lar pytest deg bruke vanlige Python assert-setninger i enkle funksjoner. Dette reduserer mengden standardkode betydelig og gjør testene dine mer konsise, siden du ikke lenger trenger å pakke logikk inn i komplekse klassehierarkier eller huske mange rammeverksspesifikke påstandsnavn bare for å verifisere et enkelt resultat.

En av de mest kraftfulle funksjonene i pytest er systemet for testoppdagelse. Ved å bare kjøre pytest i prosjektmappen din, vil det automatisk finne alle filer som matcher mønsteret test_*.py eller *_test.py og utføre alle funksjoner i disse filene som starter med test_. Dette betyr at du ikke trenger å spesifisere manuelt hvilke tester som skal kjøres – pytest håndterer dette for deg.

En annen viktig fordel er bruken av fixtures. Fixtures håndterer arbeidet med å forberede og rydde opp ressurser testene dine trenger, som midlertidige filer eller databasetilkoblinger, på en måte som er enkel å gjenbruke. Du dekorerer bare en funksjon med @pytest.fixture og ber deretter om den som et argument i testfunksjonene dine. Dette holder koden din modulær og hindrer deg i å gjenta samme oppsettlogikk.

For å komme i gang med pytest må du først installere det. Bruk følgende kommando i terminalen:

pip install pytest

Dette vil laste ned og installere den nyeste versjonen av pytest slik at du kan begynne å skrive og kjøre testene dine med en gang.

Her er en praktisk demonstrasjon av hvordan du bruker det til å skrive funksjonsbaserte tester og definere gjenbrukbare 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
question mark

Hva er en viktig fordel med å bruke pytest sammenlignet med unittest?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 6

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 5. Kapittel 6
some-alt