Skriva era första pytest-tester
Förstå testupptäckt, assert-satser och teststruktur.
Skriva era första pytest-tester är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.
Installera pytest
Installera pytest med pip. Det kräver ingen obligatorisk konfiguration — tester identifieras automatiskt.
# pip install pytest
# Run all tests
# pytest
# Run a specific file
# pytest test_math.pyEn enkel testfunktion
pytest samlar in alla funktioner som börjar med test_. Använd vanliga assert-satser — pytest skriver om dem för att ge detaljerade resultat.
# 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) == 0Testfiler och identifiering
pytest identifierar testfiler med namnen test_*.py eller *_test.py och samlar in funktioner med namnen test_* eller klasser med namnen Test*.
tests/
test_utils.py
test_models.py
conftest.py # shared fixturesGruppera tester i klasser
Gruppera relaterade tester i en klass vars namn börjar med Test. unittest.TestCase krävs inte.
class TestCalculator:
def test_add(self):
assert 1 + 1 == 2
def test_multiply(self):
assert 3 * 4 == 12Testa undantag
Använd pytest.raises som en context manager för att kontrollera att specifika undantag utlöses.
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)Flaggan -v
Kör pytest med -v (verbose) för att se namnet på varje test och om det lyckades eller misslyckades.
# pytest -v
# test_math.py::test_add PASSED
# test_math.py::test_add_negative PASSED
# Show print output too:
# pytest -v -sHoppa över tester
Använd @pytest.mark.skip eller @pytest.mark.skipif för att villkorligt hoppa över tester.
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 TrueMarkera tester som förväntade fel
@pytest.mark.xfail markerar ett test som ni förväntar er ska misslyckas. Testet räknas som lyckat om det misslyckas och ger en varning om det oväntat lyckas.
import pytest
@pytest.mark.xfail(reason="known bug #42")
def test_buggy():
assert 1 == 2 # will fail, but that's expectedOmskrivning av assert
pytest skriver om assert-satser så att värdena som orsakade ett fel visas — mycket mer användbart än ett ensamt 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
conftest.py läses automatiskt in av pytest. Placera gemensamma fixtures och plugins här utan att importera dem uttryckligen.
# 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 parameterKöra ett urval av tester
Använd -k för att köra tester som matchar ett nyckelordsuttryck.
# 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_addSnabbkontroll
Vilket prefix måste namnet på en pytest-testfunktion börja med för att den ska identifieras automatiskt?
Sammanfattning
pytest kräver ingen boilerplate: namnge filer test_*.py, namnge funktioner test_* och använd vanliga assert-satser. Använd pytest.raises för undantag, -v för utförliga resultat och conftest.py för gemensamma fixtures.
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 76
- Lektioner
- 320
Vanliga frågor
Är lektionen ”Skriva era första pytest-tester” gratis?
Ja – hela texten till ”Skriva era första pytest-tester” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Skriva era första pytest-tester”?
Förstå testupptäckt, assert-satser och teststruktur. Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Python Academy?
Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”Skriva era första pytest-tester”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Python Academy-lektionen?
Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Skriva era första pytest-tester
- Fixtures och setup/teardown
- Parametrisering och testtäckning
- Mockning med unittest.mock