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ä | Testing with unittest and pytest
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