Johdanto Pythonin Unittest-Kirjastoon: Rakenteisten Yksikkötestien Kirjoittaminen
Unittest kuuluu Pythonin vakiokirjastoon, joten lisäasennuksia ei tarvita aloittamiseen. Se perustuu testitapausten käsitteeseen, jotka ovat Python-luokkia ja periytyvät kehyksen TestCase-luokasta. Unittest on erinomainen työkalu testauksen aloittelijoille, sillä se jäsentää testit tavalla, joka heijastaa olio-ohjelmoinnin periaatteita.
Unittestin rakenne
Unittestissä jokainen testi on metodi, joka sijaitsee unittest.TestCase-aliluokassa. Tämä rakenne kannustaa ryhmittelemään toisiinsa liittyvät testit yhteen, mikä auttaa järjestämään testikoodin loogisesti ja parantaa luettavuutta.
Testin kirjoittaminen Unittestillä
Testataan yksinkertaista funktiota, joka laskee kahden luvun keskiarvon. Tässä on testattava funktio:
def calculate_average(num1, num2):
return (num1 + num2) / 2
Testitapauksen luominen
Testitapauksen luomiseksi määritellään luokka, joka perii unittest.TestCase-luokasta. Tämän luokan sisällä voidaan määritellä metodeja calculate_average-funktion testaamiseen.
import unittest
class TestCalculateAverage(unittest.TestCase):
def test_integers(self):
self.assertEqual(calculate_average(10, 20), 15)
def test_floats(self):
self.assertAlmostEqual(calculate_average(10.5, 20.5), 15.5)
- Ensin
importUnittest-moduuli, joka kuuluu Pythonin vakiokirjastoon; class TestCalculateAverage(unittest.TestCase)luo uuden testitapauksen. Se periiunittest.TestCase-luokasta, joka tarjoaa testausominaisuudet;- Jokaisen luokan metodin tulisi alkaa
test_-etuliitteellä; - Metodit käyttävät tiettyjä assert-lauseita tarkistaakseen, onko ehto tosi.
Esimerkki onnistuneesta testituloksesta
Kun kaikki testit läpäisevät Unittestissä, tuloste on selkeä ja osoittaa, että kaikki testit suoritettiin onnistuneesti ilman virheitä. Tässä esimerkki onnistuneesta testiajon tulosteesta:
...
----------------------------------------------------------------------
Ran 3 tests in 0.002s
OK
Esimerkki epäonnistuneesta testituloksesta
Jos yksi tai useampi testi epäonnistuu, tuloste antaa yksityiskohtaiset tiedot virheistä, mukaan lukien mitkä testit epäonnistuivat ja miksi. Tässä esimerkki siitä, miltä testin epäonnistuminen voi näyttää:
..F
----------------------------------------------------------------------
Ran 3 tests in 0.003s
FAILED (failures=1)
======================================================================
FAIL: test_average_floats (test_module.TestCalculateAverage)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/path/to/test_module.py", line 10, in test_average_floats
self.assertAlmostEqual(calculate_average(10.0, 20.0), 15.1)
AssertionError: 15.0 != 15.1 within 7 places (0.10000000000000142 difference)
----------------------------------------------------------------------
Tämä tuloste sisältää:
..Fosoittaa, että kolme testiä suoritettiin; kaksi ensimmäistä läpäistiin (..), ja kolmas epäonnistui (F);FAILED (failures=1)kertoo, että yksi testi epäonnistui;- Yksityiskohtainen virheraportti alkaa testin tunnisteella (
test_average_floats) ja luokalla (TestCalculateAverage). Se antaa jäljityksen testikoodin riville, joka aiheutti virheen, ja selittää väitteen virheen luonteen, mukaan lukien odotetun arvon, todellisen arvon ja sallitun virhemarginaalin.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Mahtavaa!
Completion arvosana parantunut arvoon 3.13
Johdanto Pythonin Unittest-Kirjastoon: Rakenteisten Yksikkötestien Kirjoittaminen
Pyyhkäise näyttääksesi valikon
Unittest kuuluu Pythonin vakiokirjastoon, joten lisäasennuksia ei tarvita aloittamiseen. Se perustuu testitapausten käsitteeseen, jotka ovat Python-luokkia ja periytyvät kehyksen TestCase-luokasta. Unittest on erinomainen työkalu testauksen aloittelijoille, sillä se jäsentää testit tavalla, joka heijastaa olio-ohjelmoinnin periaatteita.
Unittestin rakenne
Unittestissä jokainen testi on metodi, joka sijaitsee unittest.TestCase-aliluokassa. Tämä rakenne kannustaa ryhmittelemään toisiinsa liittyvät testit yhteen, mikä auttaa järjestämään testikoodin loogisesti ja parantaa luettavuutta.
Testin kirjoittaminen Unittestillä
Testataan yksinkertaista funktiota, joka laskee kahden luvun keskiarvon. Tässä on testattava funktio:
def calculate_average(num1, num2):
return (num1 + num2) / 2
Testitapauksen luominen
Testitapauksen luomiseksi määritellään luokka, joka perii unittest.TestCase-luokasta. Tämän luokan sisällä voidaan määritellä metodeja calculate_average-funktion testaamiseen.
import unittest
class TestCalculateAverage(unittest.TestCase):
def test_integers(self):
self.assertEqual(calculate_average(10, 20), 15)
def test_floats(self):
self.assertAlmostEqual(calculate_average(10.5, 20.5), 15.5)
- Ensin
importUnittest-moduuli, joka kuuluu Pythonin vakiokirjastoon; class TestCalculateAverage(unittest.TestCase)luo uuden testitapauksen. Se periiunittest.TestCase-luokasta, joka tarjoaa testausominaisuudet;- Jokaisen luokan metodin tulisi alkaa
test_-etuliitteellä; - Metodit käyttävät tiettyjä assert-lauseita tarkistaakseen, onko ehto tosi.
Esimerkki onnistuneesta testituloksesta
Kun kaikki testit läpäisevät Unittestissä, tuloste on selkeä ja osoittaa, että kaikki testit suoritettiin onnistuneesti ilman virheitä. Tässä esimerkki onnistuneesta testiajon tulosteesta:
...
----------------------------------------------------------------------
Ran 3 tests in 0.002s
OK
Esimerkki epäonnistuneesta testituloksesta
Jos yksi tai useampi testi epäonnistuu, tuloste antaa yksityiskohtaiset tiedot virheistä, mukaan lukien mitkä testit epäonnistuivat ja miksi. Tässä esimerkki siitä, miltä testin epäonnistuminen voi näyttää:
..F
----------------------------------------------------------------------
Ran 3 tests in 0.003s
FAILED (failures=1)
======================================================================
FAIL: test_average_floats (test_module.TestCalculateAverage)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/path/to/test_module.py", line 10, in test_average_floats
self.assertAlmostEqual(calculate_average(10.0, 20.0), 15.1)
AssertionError: 15.0 != 15.1 within 7 places (0.10000000000000142 difference)
----------------------------------------------------------------------
Tämä tuloste sisältää:
..Fosoittaa, että kolme testiä suoritettiin; kaksi ensimmäistä läpäistiin (..), ja kolmas epäonnistui (F);FAILED (failures=1)kertoo, että yksi testi epäonnistui;- Yksityiskohtainen virheraportti alkaa testin tunnisteella (
test_average_floats) ja luokalla (TestCalculateAverage). Se antaa jäljityksen testikoodin riville, joka aiheutti virheen, ja selittää väitteen virheen luonteen, mukaan lukien odotetun arvon, todellisen arvon ja sallitun virhemarginaalin.
Kiitos palautteestasi!