Hoppa till innehållet
AI-grafen
D· AI-utvecklareprogrammering· ca 45 min· grundläggande — ändras sällan· verifierad 2026-09-20

Testning med pytest

Kunna skriva enhetstester, förstå fixtures och tolka en fallerande testrapport.

Förkunskaper

Intuition

Ett test är kod som anropar din kod och kontrollerar resultatet med assert. Ett testbibliotek (pytest) hittar alla test_*-funktioner, kör dem och rapporterar.

Varför? För att kunna ändra kod utan rädsla. Ett ML-projekt utan tester går sönder tyst: en förändring i dataladdningen och plötsligt tränar modellen på fel kolumn — utan felmeddelande, bara sämre siffror tre timmar senare.

Testa: normalfall, gränsfall (tomt, noll, ett element), felfall (ska lyfta undantag).

Kod

# test_normalisera.py
import pytest
from normalisera import normalisera

def test_medel_noll_std_ett():
    ut = normalisera([1.0, 2.0, 3.0])
    assert abs(sum(ut) / 3) < 1e-9

@pytest.mark.parametrize("x", [[], [5.0]])
def test_degenererat(x):
    with pytest.raises(ValueError):
        normalisera(x)

@pytest.fixture
def data():
    return [10.0, 20.0, 30.0, 40.0]

def test_ordning_bevaras(data):
    ut = normalisera(data)
    assert ut == sorted(ut)

Kör pytest -q. En fallerande rad visar assert 0.3 < 1e-9 med värdena — läs vilket uttryck som föll, inte bara att det föll.

Behärskning innebär

  • Skriver enhetstester med pytest inkl. gränsfall
  • Använder fixtures och parametrize
  • Tolkar en fallerande testrapport

Logga in för att göra övningarna och bygga upp din behärskning.

Källor

Alla källor och licenser