Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Bruk av Assert-setningen i Pytest: Validering av Testbetingelser | Beherske Pytest-Rammeverket
Python Strukturert Programmering

bookBruk av Assert-setningen i Pytest: Validering av Testbetingelser

assert-setningen brukes for å verifisere at en betingelse er True. Hvis betingelsen er False, vil testen feile. Pytest forbedrer den grunnleggende assert-funksjonaliteten ved å gi detaljert tilbakemelding når en påstand feiler, noe som gjør det enklere å forstå hva som gikk galt.

Enkle påstander:

Kontroller at betingelsen evalueres til True. Hvis den evalueres til False, vil Pytest kaste en AssertionError og markere testen som mislykket.

assert condition

I det neste eksempelet skal word.isupper() returnere True hvis word er med store bokstaver. Hvis ikke, vil testen feile.

def test_is_uppercase():
    word = "HELLO"
    assert word.isupper()

Komparative påstander:

assert actual == expected

For å verifisere at resultatet av en operasjon (actual) samsvarer med forventet verdi.

def test_addition():
    assert add(5, 3) == 8, "The addition function should return 8 for 5 + 3"

Her testes add-funksjonen for å sikre at den korrekt legger sammen to tall. Meldingen etter komma gir ekstra kontekst hvis testen feiler.

Påstander med detaljert tilbakemelding:

assert condition, message

For å gi en egendefinert feilmelding som vises når påstanden feiler, og dermed gir mer innsikt i problemet.

def test_multiply():
    result = multiply(2, 5)
    assert result == 10, f"Expected 10, got {result}"

Denne påstanden sjekker om multiply-funksjonen returnerer 10 når man multipliserer 2 og 5. Den egendefinerte meldingen tydeliggjør forventet resultat versus faktisk resultat hvis testen feiler.

Påstander for unntak:

pytest.raises(ExceptionType)

For å bekrefte at en bestemt unntakstype kastes av en kodeblokk.

import pytest

def divide(x, y):
    return x / y

def test_divide_zero():
    with pytest.raises(ZeroDivisionError):
        divide(10, 0)

Denne testen sikrer at deling på null kaster en ZeroDivisionError. Dette er viktig for å teste feilhåndtering i koden din.

Avanserte påstander:

Bruk påstander for å sjekke mer komplekse forhold, som innholdet i lister, ordbøker eller mer nyanserte tilstander i applikasjonen din.

def test_inventory():
    inventory = ["apple", "banana", "cherry"]
    assert "banana" in inventory, "Banana should be in the inventory"

Denne testen sjekker om et element finnes i en liste, og gir tydelig tilbakemelding hvis elementet mangler.

Oppgave

Swipe to start coding

Skriv pytest-testfunksjoner for å validere følgende betingelser:

  • Kontroller at kall på is_even(4) returnerer True.
  • Kontroller at kall på add(2, 3) gir 5.
  • Kontroller at kall på multiply(3, 7) returnerer 21, og gi en detaljert feilmelding hvis påstanden feiler.
  • Kontroller at kall på divide(10, 0) utløser en ZeroDivisionError.
  • Kontroller at strengen 'grape' finnes i fruit_list.

Skriv hver test som en egen funksjon med prefikset test_. Bruk assert-setninger for validering. For unntaket, bruk pytest.raises-kontekstbehandleren. For den detaljerte meldingen, bruk en f-streng som viser det faktiske resultatet hvis påstanden feiler.

Løsning

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 3
single

single

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

Suggested prompts:

Can you explain how pytest improves the output of failed assertions?

What are some best practices for writing custom error messages in assertions?

How do I use pytest to test for exceptions in my code?

close

bookBruk av Assert-setningen i Pytest: Validering av Testbetingelser

Sveip for å vise menyen

assert-setningen brukes for å verifisere at en betingelse er True. Hvis betingelsen er False, vil testen feile. Pytest forbedrer den grunnleggende assert-funksjonaliteten ved å gi detaljert tilbakemelding når en påstand feiler, noe som gjør det enklere å forstå hva som gikk galt.

Enkle påstander:

Kontroller at betingelsen evalueres til True. Hvis den evalueres til False, vil Pytest kaste en AssertionError og markere testen som mislykket.

assert condition

I det neste eksempelet skal word.isupper() returnere True hvis word er med store bokstaver. Hvis ikke, vil testen feile.

def test_is_uppercase():
    word = "HELLO"
    assert word.isupper()

Komparative påstander:

assert actual == expected

For å verifisere at resultatet av en operasjon (actual) samsvarer med forventet verdi.

def test_addition():
    assert add(5, 3) == 8, "The addition function should return 8 for 5 + 3"

Her testes add-funksjonen for å sikre at den korrekt legger sammen to tall. Meldingen etter komma gir ekstra kontekst hvis testen feiler.

Påstander med detaljert tilbakemelding:

assert condition, message

For å gi en egendefinert feilmelding som vises når påstanden feiler, og dermed gir mer innsikt i problemet.

def test_multiply():
    result = multiply(2, 5)
    assert result == 10, f"Expected 10, got {result}"

Denne påstanden sjekker om multiply-funksjonen returnerer 10 når man multipliserer 2 og 5. Den egendefinerte meldingen tydeliggjør forventet resultat versus faktisk resultat hvis testen feiler.

Påstander for unntak:

pytest.raises(ExceptionType)

For å bekrefte at en bestemt unntakstype kastes av en kodeblokk.

import pytest

def divide(x, y):
    return x / y

def test_divide_zero():
    with pytest.raises(ZeroDivisionError):
        divide(10, 0)

Denne testen sikrer at deling på null kaster en ZeroDivisionError. Dette er viktig for å teste feilhåndtering i koden din.

Avanserte påstander:

Bruk påstander for å sjekke mer komplekse forhold, som innholdet i lister, ordbøker eller mer nyanserte tilstander i applikasjonen din.

def test_inventory():
    inventory = ["apple", "banana", "cherry"]
    assert "banana" in inventory, "Banana should be in the inventory"

Denne testen sjekker om et element finnes i en liste, og gir tydelig tilbakemelding hvis elementet mangler.

Oppgave

Swipe to start coding

Skriv pytest-testfunksjoner for å validere følgende betingelser:

  • Kontroller at kall på is_even(4) returnerer True.
  • Kontroller at kall på add(2, 3) gir 5.
  • Kontroller at kall på multiply(3, 7) returnerer 21, og gi en detaljert feilmelding hvis påstanden feiler.
  • Kontroller at kall på divide(10, 0) utløser en ZeroDivisionError.
  • Kontroller at strengen 'grape' finnes i fruit_list.

Skriv hver test som en egen funksjon med prefikset test_. Bruk assert-setninger for validering. For unntaket, bruk pytest.raises-kontekstbehandleren. For den detaljerte meldingen, bruk en f-streng som viser det faktiske resultatet hvis påstanden feiler.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 3
single

single

some-alt