Assert-lauseen Käyttäminen Pytestissä: Testiehtojen Validointi
assert-lauseella varmistetaan, että ehto on True. Jos ehto on False, testi epäonnistuu. Pytest parantaa perus-assert-lausetta tarjoamalla yksityiskohtaisempaa tietoa epäonnistumisen syistä, mikä helpottaa virheiden ymmärtämistä.
Yksinkertaiset assertiot:
Tarkista, että ehto arvioituu arvoksi True. Jos se arvioituu arvoksi False, Pytest nostaa AssertionError-poikkeuksen ja merkitsee testin epäonnistuneeksi.
assert condition
Seuraavassa esimerkissä word.isupper() palauttaa arvon True, jos word on isoilla kirjaimilla. Muussa tapauksessa testi epäonnistuu.
def test_is_uppercase():
word = "HELLO"
assert word.isupper()
Vertailuassertiot:
assert actual == expected
Varmista, että operaation tulos (actual) vastaa odotettua arvoa.
def test_addition():
assert add(5, 3) == 8, "The addition function should return 8 for 5 + 3"
Tässä testataan add-funktiota, jotta varmistetaan, että se laskee kaksi lukua oikein yhteen. Pilkun jälkeinen viesti antaa lisätietoa, jos testi epäonnistuu.
Assertiot yksityiskohtaisella palautteella:
assert condition, message
Tarjoa mukautettu virheilmoitus, joka näytetään, kun assertio epäonnistuu, tarjoten lisätietoa ongelmasta.
def test_multiply():
result = multiply(2, 5)
assert result == 10, f"Expected 10, got {result}"
Tämä assertio tarkistaa, palauttaako multiply-funktio arvon 10 kerrottaessa 2 ja 5. Mukautettu viesti selventää odotetun ja toteutuneen tuloksen, jos testi epäonnistuu.
Assertiot poikkeuksille:
pytest.raises(ExceptionType)
Varmista, että tietty poikkeus nousee koodilohkossa.
import pytest
def divide(x, y):
return x / y
def test_divide_zero():
with pytest.raises(ZeroDivisionError):
divide(10, 0)
Tämä testi varmistaa, että nollalla jakaminen nostaa ZeroDivisionError-poikkeuksen. Tämä on tärkeää virheenkäsittelyn testaamisessa.
Kehittyneet assertiot:
Käytä assertioita tarkistamaan monimutkaisempia ehtoja, kuten listojen, sanakirjojen sisältöä tai sovelluksen tiloja.
def test_inventory():
inventory = ["apple", "banana", "cherry"]
assert "banana" in inventory, "Banana should be in the inventory"
Tämä testi tarkistaa, löytyykö tietty alkio listasta, ja antaa selkeän palautteen, jos alkio puuttuu.
Swipe to start coding
Kirjoita pytest-testifunktiot seuraavien ehtojen tarkistamiseksi:
- Tarkista, että kutsu
is_even(4)palauttaaTrue. - Tarkista, että kutsu
add(2, 3)on yhtä kuin5. - Tarkista, että kutsu
multiply(3, 7)palauttaa21, ja anna yksityiskohtainen virheilmoitus, jos väite epäonnistuu. - Tarkista, että kutsu
divide(10, 0)nostaa poikkeuksenZeroDivisionError. - Tarkista, että merkkijono
'grape'löytyy listastafruit_list.
Kirjoita jokainen testi omana funktionaan käyttäen etuliitettä test_. Käytä validointiin assert-lauseita. Poikkeuksen tarkistamiseen käytä pytest.raises -kontekstinhallintaa. Yksityiskohtaista virheilmoitusta varten käytä f-merkkijonoa, joka näyttää todellisen tuloksen, jos väite epäonnistuu.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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?
Mahtavaa!
Completion arvosana parantunut arvoon 3.13
Assert-lauseen Käyttäminen Pytestissä: Testiehtojen Validointi
Pyyhkäise näyttääksesi valikon
assert-lauseella varmistetaan, että ehto on True. Jos ehto on False, testi epäonnistuu. Pytest parantaa perus-assert-lausetta tarjoamalla yksityiskohtaisempaa tietoa epäonnistumisen syistä, mikä helpottaa virheiden ymmärtämistä.
Yksinkertaiset assertiot:
Tarkista, että ehto arvioituu arvoksi True. Jos se arvioituu arvoksi False, Pytest nostaa AssertionError-poikkeuksen ja merkitsee testin epäonnistuneeksi.
assert condition
Seuraavassa esimerkissä word.isupper() palauttaa arvon True, jos word on isoilla kirjaimilla. Muussa tapauksessa testi epäonnistuu.
def test_is_uppercase():
word = "HELLO"
assert word.isupper()
Vertailuassertiot:
assert actual == expected
Varmista, että operaation tulos (actual) vastaa odotettua arvoa.
def test_addition():
assert add(5, 3) == 8, "The addition function should return 8 for 5 + 3"
Tässä testataan add-funktiota, jotta varmistetaan, että se laskee kaksi lukua oikein yhteen. Pilkun jälkeinen viesti antaa lisätietoa, jos testi epäonnistuu.
Assertiot yksityiskohtaisella palautteella:
assert condition, message
Tarjoa mukautettu virheilmoitus, joka näytetään, kun assertio epäonnistuu, tarjoten lisätietoa ongelmasta.
def test_multiply():
result = multiply(2, 5)
assert result == 10, f"Expected 10, got {result}"
Tämä assertio tarkistaa, palauttaako multiply-funktio arvon 10 kerrottaessa 2 ja 5. Mukautettu viesti selventää odotetun ja toteutuneen tuloksen, jos testi epäonnistuu.
Assertiot poikkeuksille:
pytest.raises(ExceptionType)
Varmista, että tietty poikkeus nousee koodilohkossa.
import pytest
def divide(x, y):
return x / y
def test_divide_zero():
with pytest.raises(ZeroDivisionError):
divide(10, 0)
Tämä testi varmistaa, että nollalla jakaminen nostaa ZeroDivisionError-poikkeuksen. Tämä on tärkeää virheenkäsittelyn testaamisessa.
Kehittyneet assertiot:
Käytä assertioita tarkistamaan monimutkaisempia ehtoja, kuten listojen, sanakirjojen sisältöä tai sovelluksen tiloja.
def test_inventory():
inventory = ["apple", "banana", "cherry"]
assert "banana" in inventory, "Banana should be in the inventory"
Tämä testi tarkistaa, löytyykö tietty alkio listasta, ja antaa selkeän palautteen, jos alkio puuttuu.
Swipe to start coding
Kirjoita pytest-testifunktiot seuraavien ehtojen tarkistamiseksi:
- Tarkista, että kutsu
is_even(4)palauttaaTrue. - Tarkista, että kutsu
add(2, 3)on yhtä kuin5. - Tarkista, että kutsu
multiply(3, 7)palauttaa21, ja anna yksityiskohtainen virheilmoitus, jos väite epäonnistuu. - Tarkista, että kutsu
divide(10, 0)nostaa poikkeuksenZeroDivisionError. - Tarkista, että merkkijono
'grape'löytyy listastafruit_list.
Kirjoita jokainen testi omana funktionaan käyttäen etuliitettä test_. Käytä validointiin assert-lauseita. Poikkeuksen tarkistamiseen käytä pytest.raises -kontekstinhallintaa. Yksityiskohtaista virheilmoitusta varten käytä f-merkkijonoa, joka näyttää todellisen tuloksen, jos väite epäonnistuu.
Ratkaisu
Kiitos palautteestasi!
single