Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Brug af Assert-sætningen i Pytest: Validering af Testbetingelser | Beherskelse af Pytest-Rammeværket
Python Strukturel Programmering

bookBrug af Assert-sætningen i Pytest: Validering af Testbetingelser

assert-udsagnet bruges til at verificere, at en betingelse er True. Hvis betingelsen er False, fejler testen. Pytest udvider den grundlæggende assert ved at give detaljeret output, når en påstand fejler, hvilket gør det lettere at forstå, hvad der gik galt.

Enkle påstande:

Kontroller, at betingelsen evalueres som True. Hvis den evalueres som False, rejser Pytest en AssertionError og markerer testen som fejlet.

assert condition

I det næste eksempel skal word.isupper() returnere True, hvis word er med store bogstaver. Hvis ikke, fejler testen.

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

Komparative påstande:

assert actual == expected

For at verificere, at resultatet af en operation (actual) matcher den forventede værdi.

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

Her testes add-funktionen for at sikre, at den korrekt lægger to tal sammen. Beskeden efter kommaet giver yderligere kontekst, hvis testen fejler.

Påstande med detaljeret feedback:

assert condition, message

For at give en brugerdefineret fejlmeddelelse, der vises, når påstanden fejler, hvilket giver mere indsigt i problemet.

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

Denne påstand kontrollerer, om multiply-funktionen returnerer 10, når man ganger 2 og 5. Den brugerdefinerede besked præciserer det forventede resultat i forhold til det faktiske resultat, hvis testen fejler.

Påstande for undtagelser:

pytest.raises(ExceptionType)

For at bekræfte, at en bestemt undtagelse udløses af en kodeblok.

import pytest

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

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

Denne test sikrer, at division med nul udløser en ZeroDivisionError. Det er essentielt for at teste fejlhåndtering i din kode.

Avancerede påstande:

Brug påstande til at kontrollere mere komplekse betingelser, såsom indholdet af lister, ordbøger eller mere nuancerede tilstande i din applikation.

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

Denne test kontrollerer, om et element findes i en liste, og giver tydelig feedback, hvis elementet mangler.

Opgave

Swipe to start coding

Skriv pytest-testfunktioner for at validere følgende betingelser:

  • Kontroller, at kald af is_even(4) returnerer True.
  • Kontroller, at kald af add(2, 3) giver 5.
  • Kontroller, at kald af multiply(3, 7) returnerer 21, og giv en detaljeret fejlmeddelelse, hvis påstanden fejler.
  • Kontroller, at kald af divide(10, 0) udløser en ZeroDivisionError.
  • Kontroller, at strengen 'grape' findes i fruit_list.

Skriv hver test som en separat funktion med præfikset test_. Brug assert-udsagn til validering. Brug pytest.raises-kontekststyring til undtagelsen. Brug en f-streng til den detaljerede fejlmeddelelse, så den faktiske værdi vises, hvis påstanden fejler.

Løsning

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 3
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

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

bookBrug af Assert-sætningen i Pytest: Validering af Testbetingelser

Stryg for at vise menuen

assert-udsagnet bruges til at verificere, at en betingelse er True. Hvis betingelsen er False, fejler testen. Pytest udvider den grundlæggende assert ved at give detaljeret output, når en påstand fejler, hvilket gør det lettere at forstå, hvad der gik galt.

Enkle påstande:

Kontroller, at betingelsen evalueres som True. Hvis den evalueres som False, rejser Pytest en AssertionError og markerer testen som fejlet.

assert condition

I det næste eksempel skal word.isupper() returnere True, hvis word er med store bogstaver. Hvis ikke, fejler testen.

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

Komparative påstande:

assert actual == expected

For at verificere, at resultatet af en operation (actual) matcher den forventede værdi.

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

Her testes add-funktionen for at sikre, at den korrekt lægger to tal sammen. Beskeden efter kommaet giver yderligere kontekst, hvis testen fejler.

Påstande med detaljeret feedback:

assert condition, message

For at give en brugerdefineret fejlmeddelelse, der vises, når påstanden fejler, hvilket giver mere indsigt i problemet.

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

Denne påstand kontrollerer, om multiply-funktionen returnerer 10, når man ganger 2 og 5. Den brugerdefinerede besked præciserer det forventede resultat i forhold til det faktiske resultat, hvis testen fejler.

Påstande for undtagelser:

pytest.raises(ExceptionType)

For at bekræfte, at en bestemt undtagelse udløses af en kodeblok.

import pytest

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

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

Denne test sikrer, at division med nul udløser en ZeroDivisionError. Det er essentielt for at teste fejlhåndtering i din kode.

Avancerede påstande:

Brug påstande til at kontrollere mere komplekse betingelser, såsom indholdet af lister, ordbøger eller mere nuancerede tilstande i din applikation.

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

Denne test kontrollerer, om et element findes i en liste, og giver tydelig feedback, hvis elementet mangler.

Opgave

Swipe to start coding

Skriv pytest-testfunktioner for at validere følgende betingelser:

  • Kontroller, at kald af is_even(4) returnerer True.
  • Kontroller, at kald af add(2, 3) giver 5.
  • Kontroller, at kald af multiply(3, 7) returnerer 21, og giv en detaljeret fejlmeddelelse, hvis påstanden fejler.
  • Kontroller, at kald af divide(10, 0) udløser en ZeroDivisionError.
  • Kontroller, at strengen 'grape' findes i fruit_list.

Skriv hver test som en separat funktion med præfikset test_. Brug assert-udsagn til validering. Brug pytest.raises-kontekststyring til undtagelsen. Brug en f-streng til den detaljerede fejlmeddelelse, så den faktiske værdi vises, hvis påstanden fejler.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 3
single

single

some-alt