Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Writing Tests with Unittest | Testing with unittest and pytest
Pythonin Rakenteellinen Ohjelmointi

Writing Tests with Unittest

Pyyhkäise näyttääksesi valikon

Kun haluat varmistaa, että koodisi toimii odotetusti, automaattisten testien kirjoittaminen on olennaista. Pythonin unittest-moduuli on sisäänrakennettu kehys, jonka avulla voit luoda ja järjestää testejä helposti. Testitapaukset kirjoitetaan luomalla luokkia, jotka perivät unittest.TestCase -luokan. Näissä luokissa määritellään metodit, joiden nimet alkavat test_. Jokainen metodi tarkistaa tietyn osa-alueen koodistasi.

Testisarja (test suite) on kokoelma testitapauksia, jotka voidaan suorittaa yhdessä. Oletuksena unittest etsii ja suorittaa kaikki test_-alkuiset metodit TestCase-luokissasi. Tulosten tarkistamiseen käytetään väittämiä (assertioita), kuten assertEqual, assertTrue, assertFalse ja assertRaises. Nämä väittämät vertaavat toteutuneita tuloksia odotettuihin ja ilmoittavat virheistä, jos ne eivät täsmää.

Testien suorittamiseen voit käyttää komentoriviä tai kutsua unittest.main() testitiedoston lopussa.

Note
Huomio

assertRaises noudattaa erilaista mallia verrattuna muihin väittämämetodeihin, kuten assertEqual tai assertTrue. Sen sijaan, että se tarkistaisi lopullisen arvon, sitä käytetään kontekstinhallitsijana with-lauseen kanssa luomaan suojattu alue. Tämä mahdollistaa testin seurata koodin suoritusta ja "napata" odotetun virheen.

1234567891011121314151617181920212223
import unittest def add(a, b): return a + b def divide(a, b): return a / b class TestMathFunctions(unittest.TestCase): def test_add_positive_numbers(self): self.assertEqual(add(2, 3), 5) def test_add_negative_numbers(self): self.assertEqual(add(-2, -3), -5) def test_divide_normal(self): self.assertAlmostEqual(divide(10, 2), 5.0) def test_divide_by_zero(self): with self.assertRaises(ZeroDivisionError): divide(10, 0) unittest.main(argv=['first-arg-is-ignored'], exit=False)
Note
Huomio

Tämän luvun funktio unittest.main() sisältää muutamia ylimääräisiä parametreja, joita tarvitaan vain tässä oppimisympäristössä. Ne auttavat koodia toimimaan oikein alustalla, eivätkä ole osa ydinasioita, jotka sinun tarvitsee oppia Pythonista nyt.

question mark

Mitä unittest-kirjaston assertio-metodia tulisi käyttää tarkistamaan, että funktiokutsu aiheuttaa odotetun poikkeuksen?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 2

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Osio 5. Luku 2
some-alt