Ensimmäisten pytest-testien kirjoittaminen
Ymmärtäkää testien löytäminen, assert-lauseet ja testien rakenne.
Ensimmäisten pytest-testien kirjoittaminen on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 4 oppituntia.
pytestin asentaminen
Asentakaa pytest pipillä. Se ei vaadi pakollisia asetuksia, vaan löytää testit automaattisesti.
# pip install pytest
# Run all tests
# pytest
# Run a specific file
# pytest test_math.pyYksinkertainen testifunktio
pytest kerää kaikki funktiot, joiden nimi alkaa merkkijonolla test_. Käyttäkää tavallisia assert-lausekkeita — pytest muokkaa niitä yksityiskohtaisempaa tulostetta varten.
# test_math.py
def add(a, b):
return a + b
def test_add():
assert add(2, 3) == 5
def test_add_negative():
assert add(-1, 1) == 0Testitiedostot ja testien löytäminen
pytest löytää testitiedostot, joiden nimi on test_*.py tai *_test.py, ja kerää funktiot, joiden nimi on test_*, sekä luokat, joiden nimi on Test*.
tests/
test_utils.py
test_models.py
conftest.py # shared fixturesTestien ryhmittely luokkiin
Ryhmitelkää toisiinsa liittyvät testit luokkaan, jonka nimen alussa on Test. unittest.TestCase-luokkaa ei tarvita.
class TestCalculator:
def test_add(self):
assert 1 + 1 == 2
def test_multiply(self):
assert 3 * 4 == 12Poikkeusten testaaminen
Käyttäkää pytest.raises-kontekstinhallintaa varmistaaksenne, että tietyt poikkeukset nostetaan.
import pytest
def divide(a, b):
if b == 0:
raise ZeroDivisionError("cannot divide by zero")
return a / b
def test_divide_by_zero():
with pytest.raises(ZeroDivisionError, match="cannot divide"):
divide(10, 0)-v-lippu
Suorittakaa pytest käyttäen -v-lippua (verbose), jotta näette kunkin testin nimen ja läpäisy- tai epäonnistumistilan.
# pytest -v
# test_math.py::test_add PASSED
# test_math.py::test_add_negative PASSED
# Show print output too:
# pytest -v -sTestien ohittaminen
Käyttäkää @pytest.mark.skip- tai @pytest.mark.skipif-merkintää testien ehdolliseen ohittamiseen.
import pytest, sys
@pytest.mark.skip(reason="not implemented yet")
def test_future_feature():
assert False
@pytest.mark.skipif(sys.platform == "win32", reason="Unix only")
def test_unix_only():
assert TrueTestien merkitseminen odotetuiksi epäonnistumisiksi
@pytest.mark.xfail merkitsee testin, jonka odotatte epäonnistuvan. Testi hyväksytään, jos se epäonnistuu, ja siitä varoitetaan, jos se läpäistään odottamatta.
import pytest
@pytest.mark.xfail(reason="known bug #42")
def test_buggy():
assert 1 == 2 # will fail, but that's expectedassert-lausekkeiden uudelleenkirjoitus
pytest muokkaa assert-lausekkeita näyttääkseen epäonnistumisen aiheuttaneet arvot — tämä on paljon hyödyllisempää kuin pelkkä AssertionError.
def test_list_equal():
result = [1, 2, 4]
expected = [1, 2, 3]
assert result == expected
# AssertionError:
# assert [1, 2, 4] == [1, 2, 3]
# At index 2 diff: 4 != 3conftest.py
pytest lataa conftest.py-tiedoston automaattisesti. Sijoittakaa jaetut fixturet ja liitännäiset sinne ilman erillisiä tuonteja.
# conftest.py
import pytest
@pytest.fixture
def sample_data():
return {"key": "value"}
# Any test file in the same dir can use sample_data as a parameterTestien osajoukkojen suorittaminen
Käyttäkää -k-lippua suorittaaksenne avainsanalauseketta vastaavat testit.
# Run tests containing "add"
# pytest -k "add"
# Run tests NOT containing "slow"
# pytest -k "not slow"
# Run a specific test
# pytest test_math.py::test_addPikatarkistus
Millä etuliitteellä pytest-testifunktion nimen on alettava, jotta se löydetään automaattisesti?
Kertaus
pytest ei vaadi ylimääräistä pohjakoodia: nimetkää tiedostot muodossa test_*.py, nimetkää funktiot muodossa test_* ja käyttäkää tavallista assert-lausetta. Käyttäkää pytest.raises-kontekstinhallintaa poikkeuksiin, -v-lippua yksityiskohtaisempaan tulosteeseen ja conftest.py-tiedostoa jaettuihin fixtureihin.
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 76
- Oppitunnit
- 320
Usein kysytyt kysymykset
Onko oppitunti ”Ensimmäisten pytest-testien kirjoittaminen” ilmainen?
Kyllä – oppitunnin ”Ensimmäisten pytest-testien kirjoittaminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Ensimmäisten pytest-testien kirjoittaminen”?
Ymmärtäkää testien löytäminen, assert-lauseet ja testien rakenne. Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Ensimmäisten pytest-testien kirjoittaminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?
Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Ensimmäisten pytest-testien kirjoittaminen
- Fixturet ja valmistelu/purku
- Parametrisointi ja testikattavuus
- Mockaus unittest.mockilla