Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Använda Assert-Satsen i Pytest: Validering av Testvillkor | Behärska Pytest-ramverket
Python Strukturell Programmering

bookAnvända Assert-Satsen i Pytest: Validering av Testvillkor

assert-satsen används för att verifiera att ett villkor är True. Om villkoret är False misslyckas testet. Pytest förbättrar den grundläggande assert genom att ge detaljerad utdata när kontrollen misslyckas, vilket gör det enklare att förstå vad som gick fel.

Enkla assertioner:

Kontrollera att villkoret utvärderas till True. Om det utvärderas till False kastar Pytest ett AssertionError och markerar testet som misslyckat.

assert condition

I nästa exempel ska word.isupper() returnera True om word är i versaler. Om inte, misslyckas testet.

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

Jämförande assertioner:

assert actual == expected

För att verifiera att resultatet av en operation (actual) matchar det förväntade värdet.

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

Här testas funktionen add för att säkerställa att den korrekt adderar två tal. Meddelandet efter kommatecknet ger ytterligare kontext om testet misslyckas.

Assertioner med detaljerad återkoppling:

assert condition, message

För att ange ett anpassat felmeddelande som visas när assertionen misslyckas, vilket ger mer insikt i problemet.

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

Denna assertion kontrollerar om funktionen multiply returnerar 10 vid multiplikation av 2 och 5. Det anpassade meddelandet förtydligar det förväntade resultatet jämfört med det faktiska om testet misslyckas.

Assertioner för undantag:

pytest.raises(ExceptionType)

För att bekräfta att ett visst undantag kastas av en kodblock.

import pytest

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

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

Detta test säkerställer att division med noll kastar ett ZeroDivisionError. Det är viktigt för att testa felhantering i din kod.

Avancerade assertioner:

Använd assertioner för att kontrollera mer komplexa villkor, såsom innehåll i listor, ordböcker eller mer nyanserade tillstånd i din applikation.

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

Detta test kontrollerar om ett objekt finns i en lista och ger tydlig återkoppling om objektet saknas.

Uppgift

Swipe to start coding

Skriv pytest-testfunktioner för att validera följande villkor:

  1. Kontrollera att anropet is_even(4) returnerar True.
  2. Kontrollera att anropet add(2, 3) är lika med 5.
  3. Kontrollera att anropet multiply(3, 7) returnerar 21, och ange ett detaljerat felmeddelande om kontrollen misslyckas.
  4. Kontrollera att anropet divide(10, 0) utlöser ett ZeroDivisionError. Du kan verifiera detta med ett try / except-block och ett assert-uttryck.
  5. Kontrollera att strängen 'grape' finns i fruit_list.

Skriv varje test som en separat funktion med prefixet test_. Använd assert-uttryck för validering. För det detaljerade felmeddelandet, använd en f-sträng som visar det faktiska resultatet om kontrollen misslyckas.

Lösning

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 3
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

close

bookAnvända Assert-Satsen i Pytest: Validering av Testvillkor

Svep för att visa menyn

assert-satsen används för att verifiera att ett villkor är True. Om villkoret är False misslyckas testet. Pytest förbättrar den grundläggande assert genom att ge detaljerad utdata när kontrollen misslyckas, vilket gör det enklare att förstå vad som gick fel.

Enkla assertioner:

Kontrollera att villkoret utvärderas till True. Om det utvärderas till False kastar Pytest ett AssertionError och markerar testet som misslyckat.

assert condition

I nästa exempel ska word.isupper() returnera True om word är i versaler. Om inte, misslyckas testet.

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

Jämförande assertioner:

assert actual == expected

För att verifiera att resultatet av en operation (actual) matchar det förväntade värdet.

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

Här testas funktionen add för att säkerställa att den korrekt adderar två tal. Meddelandet efter kommatecknet ger ytterligare kontext om testet misslyckas.

Assertioner med detaljerad återkoppling:

assert condition, message

För att ange ett anpassat felmeddelande som visas när assertionen misslyckas, vilket ger mer insikt i problemet.

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

Denna assertion kontrollerar om funktionen multiply returnerar 10 vid multiplikation av 2 och 5. Det anpassade meddelandet förtydligar det förväntade resultatet jämfört med det faktiska om testet misslyckas.

Assertioner för undantag:

pytest.raises(ExceptionType)

För att bekräfta att ett visst undantag kastas av en kodblock.

import pytest

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

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

Detta test säkerställer att division med noll kastar ett ZeroDivisionError. Det är viktigt för att testa felhantering i din kod.

Avancerade assertioner:

Använd assertioner för att kontrollera mer komplexa villkor, såsom innehåll i listor, ordböcker eller mer nyanserade tillstånd i din applikation.

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

Detta test kontrollerar om ett objekt finns i en lista och ger tydlig återkoppling om objektet saknas.

Uppgift

Swipe to start coding

Skriv pytest-testfunktioner för att validera följande villkor:

  1. Kontrollera att anropet is_even(4) returnerar True.
  2. Kontrollera att anropet add(2, 3) är lika med 5.
  3. Kontrollera att anropet multiply(3, 7) returnerar 21, och ange ett detaljerat felmeddelande om kontrollen misslyckas.
  4. Kontrollera att anropet divide(10, 0) utlöser ett ZeroDivisionError. Du kan verifiera detta med ett try / except-block och ett assert-uttryck.
  5. Kontrollera att strängen 'grape' finns i fruit_list.

Skriv varje test som en separat funktion med prefixet test_. Använd assert-uttryck för validering. För det detaljerade felmeddelandet, använd en f-sträng som visar det faktiska resultatet om kontrollen misslyckas.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 3
single

single

some-alt