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