Testien organisointi ja suorittaminen pytestillä
Pyyhkäise näyttääksesi valikon
Kun haluat kirjoittaa selkeää, ilmaisevaa ja helposti ylläpidettävää testikoodia Pythonilla, pytest on suosittu valinta. Toisin kuin sisäänrakennettu unittest-kehys, joka noudattaa jäykkää, luokkapohjaista rakennetta ja vaatii tiettyjen assertio-metodien, kuten self.assertEqual, käyttöä, pytest mahdollistaa tavallisten Pythonin assert-lauseiden käytön yksinkertaisissa funktioissa. Tämä vähentää huomattavasti toistuvaa koodia ja tekee testeistä tiiviimpiä, sillä sinun ei enää tarvitse kietoa logiikkaa monimutkaisiin luokkahierarkioihin tai opetella kymmeniä kehyskohtaisia assertio-nimiä vain yksinkertaisen tuloksen tarkistamiseksi.
Yksi pytest:n tehokkaimmista ominaisuuksista on sen testien tunnistusjärjestelmä. Kun suoritat pytest-komennon projektihakemistossasi, se löytää automaattisesti kaikki tiedostot, jotka vastaavat test_*.py- tai *_test.py-kaavaa, ja suorittaa kaikki funktiot näissä tiedostoissa, jotka alkavat test_. Sinun ei siis tarvitse määritellä manuaalisesti, mitkä testit ajetaan – pytest hoitaa tämän puolestasi.
Toinen keskeinen etu on fixturet. Fixturet huolehtivat resurssien, kuten väliaikaistiedostojen tai tietokantayhteyksien, valmistelusta ja siivouksesta testeille helposti uudelleenkäytettävällä tavalla. Koristat vain funktion @pytest.fixture-dekoraattorilla ja pyydät sitä syötteenä testifunktioissasi. Tämä pitää koodisi modulaarisena ja estää saman alustuksen toistamisen.
Aloittaaksesi pytest:n käytön, sinun täytyy ensin asentaa se. Käytä seuraavaa komentoa terminaalissa:
pip install pytest
Tämä lataa ja asentaa uusimman version pytest:stä, jotta voit heti aloittaa testien kirjoittamisen ja ajamisen.
Tässä on käytännön esimerkki siitä, miten voit käyttää sitä funktiopohjaisten testien kirjoittamiseen ja uudelleenkäytettävien fixturejen määrittelyyn.
import pytest
# A simple function to test
def add(a, b):
return a + b
# Define a fixture that provides test data
@pytest.fixture
def sample_numbers():
return (3, 5)
# Test function using the fixture
def test_add_with_fixture(sample_numbers):
a, b = sample_numbers
result = add(a, b)
assert result == 8
# Another simple test function
def test_add_negative_numbers():
assert add(-2, -4) == -6
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Testien organisointi ja suorittaminen pytestillä
Kun haluat kirjoittaa selkeää, ilmaisevaa ja helposti ylläpidettävää testikoodia Pythonilla, pytest on suosittu valinta. Toisin kuin sisäänrakennettu unittest-kehys, joka noudattaa jäykkää, luokkapohjaista rakennetta ja vaatii tiettyjen assertio-metodien, kuten self.assertEqual, käyttöä, pytest mahdollistaa tavallisten Pythonin assert-lauseiden käytön yksinkertaisissa funktioissa. Tämä vähentää huomattavasti toistuvaa koodia ja tekee testeistä tiiviimpiä, sillä sinun ei enää tarvitse kietoa logiikkaa monimutkaisiin luokkahierarkioihin tai opetella kymmeniä kehyskohtaisia assertio-nimiä vain yksinkertaisen tuloksen tarkistamiseksi.
Yksi pytest:n tehokkaimmista ominaisuuksista on sen testien tunnistusjärjestelmä. Kun suoritat pytest-komennon projektihakemistossasi, se löytää automaattisesti kaikki tiedostot, jotka vastaavat test_*.py- tai *_test.py-kaavaa, ja suorittaa kaikki funktiot näissä tiedostoissa, jotka alkavat test_. Sinun ei siis tarvitse määritellä manuaalisesti, mitkä testit ajetaan – pytest hoitaa tämän puolestasi.
Toinen keskeinen etu on fixturet. Fixturet huolehtivat resurssien, kuten väliaikaistiedostojen tai tietokantayhteyksien, valmistelusta ja siivouksesta testeille helposti uudelleenkäytettävällä tavalla. Koristat vain funktion @pytest.fixture-dekoraattorilla ja pyydät sitä syötteenä testifunktioissasi. Tämä pitää koodisi modulaarisena ja estää saman alustuksen toistamisen.
Aloittaaksesi pytest:n käytön, sinun täytyy ensin asentaa se. Käytä seuraavaa komentoa terminaalissa:
pip install pytest
Tämä lataa ja asentaa uusimman version pytest:stä, jotta voit heti aloittaa testien kirjoittamisen ja ajamisen.
Tässä on käytännön esimerkki siitä, miten voit käyttää sitä funktiopohjaisten testien kirjoittamiseen ja uudelleenkäytettävien fixturejen määrittelyyn.
import pytest
# A simple function to test
def add(a, b):
return a + b
# Define a fixture that provides test data
@pytest.fixture
def sample_numbers():
return (3, 5)
# Test function using the fixture
def test_add_with_fixture(sample_numbers):
a, b = sample_numbers
result = add(a, b)
assert result == 8
# Another simple test function
def test_add_negative_numbers():
assert add(-2, -4) == -6
Kiitos palautteestasi!