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
Quizzes & Challenges
Quizzes
Challenges
/
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 ett påstående misslyckas, vilket gör det enklare att förstå vad som gick fel.

Enkla påståenden:

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 påståenden:

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.

Påståenden med detaljerad återkoppling:

assert condition, message

För att tillhandahålla ett anpassat felmeddelande som visas när påståendet misslyckas, vilket ger mer insikt i problemet.

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

Detta påstående kontrollerar om funktionen multiply returnerar 10 när man multiplicerar 2 och 5. Det anpassade meddelandet förtydligar det förväntade resultatet jämfört med det faktiska om testet misslyckas.

Påståenden 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 påståenden:

Använd påståenden för att kontrollera mer komplexa villkor, såsom innehållet 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:

  • Kontrollera att anropet av is_even(4) returnerar True.
  • Kontrollera att anropet av add(2, 3) är lika med 5.
  • Kontrollera att anropet av multiply(3, 7) returnerar 21, och ge ett detaljerat felmeddelande om kontrollen misslyckas.
  • Kontrollera att anropet av divide(10, 0) utlöser ett ZeroDivisionError.
  • Kontrollera att strängen 'grape' finns i fruit_list.

Skriv varje test som en separat funktion med prefixet test_. Använd assert-satser för validering. För undantaget, använd kontext-hanteraren pytest.raises. För det detaljerade meddelandet, 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

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

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 ett påstående misslyckas, vilket gör det enklare att förstå vad som gick fel.

Enkla påståenden:

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 påståenden:

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.

Påståenden med detaljerad återkoppling:

assert condition, message

För att tillhandahålla ett anpassat felmeddelande som visas när påståendet misslyckas, vilket ger mer insikt i problemet.

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

Detta påstående kontrollerar om funktionen multiply returnerar 10 när man multiplicerar 2 och 5. Det anpassade meddelandet förtydligar det förväntade resultatet jämfört med det faktiska om testet misslyckas.

Påståenden 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 påståenden:

Använd påståenden för att kontrollera mer komplexa villkor, såsom innehållet 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:

  • Kontrollera att anropet av is_even(4) returnerar True.
  • Kontrollera att anropet av add(2, 3) är lika med 5.
  • Kontrollera att anropet av multiply(3, 7) returnerar 21, och ge ett detaljerat felmeddelande om kontrollen misslyckas.
  • Kontrollera att anropet av divide(10, 0) utlöser ett ZeroDivisionError.
  • Kontrollera att strängen 'grape' finns i fruit_list.

Skriv varje test som en separat funktion med prefixet test_. Använd assert-satser för validering. För undantaget, använd kontext-hanteraren pytest.raises. För det detaljerade meddelandet, 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