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.
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.
1234567891011121314151617181920212223import 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)
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.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme