Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Testien organisointi ja suorittaminen pytestillä | Testaus Unittest- ja Pytest-kehyksillä
Pythonin Rakenteellinen Ohjelmointi

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
question mark

Mikä on keskeinen etu pytest-kirjaston käytössä verrattuna unittest-kirjastoon?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 6

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Osio 5. Luku 6
some-alt