Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Assert-lauseen Käyttäminen Pytestissä: Testiehtojen Validointi | Pytest-Kehyksen Hallinta
Pythonin Rakenteellinen Ohjelmointi

bookAssert-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.

Tehtävä

Swipe to start coding

Kirjoita pytest-testifunktiot seuraavien ehtojen tarkistamiseksi:

  • Tarkista, että kutsu is_even(4) palauttaa True.
  • Tarkista, että kutsu add(2, 3) on yhtä kuin 5.
  • Tarkista, että kutsu multiply(3, 7) palauttaa 21, ja anna yksityiskohtainen virheilmoitus, jos väite epäonnistuu.
  • Tarkista, että kutsu divide(10, 0) nostaa poikkeuksen ZeroDivisionError.
  • Tarkista, että merkkijono 'grape' löytyy listasta fruit_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

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 3
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

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

bookAssert-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.

Tehtävä

Swipe to start coding

Kirjoita pytest-testifunktiot seuraavien ehtojen tarkistamiseksi:

  • Tarkista, että kutsu is_even(4) palauttaa True.
  • Tarkista, että kutsu add(2, 3) on yhtä kuin 5.
  • Tarkista, että kutsu multiply(3, 7) palauttaa 21, ja anna yksityiskohtainen virheilmoitus, jos väite epäonnistuu.
  • Tarkista, että kutsu divide(10, 0) nostaa poikkeuksen ZeroDivisionError.
  • Tarkista, että merkkijono 'grape' löytyy listasta fruit_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

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 3
single

single

some-alt