Hvordan å skrive enhetstester

En enhetstest er en type programvaretesting hvor en liten del av kode blir individuelt og uavhengig undersøkt for riktighet. Dette er mest ofte brukt til å teste funksjoner.

En fordel med enhetstesting er at den gjør det mulig for utviklere å teste logikken i koden er riktig og at utfall er som forventet. Dermed kan det brukes til å identifisere feil på et tidlig stadium i utviklingsprosessen som kan spare tid og frustrasjoner i programvareutviklingsprosessen. Ved å bruke enhetstester kan utviklere også dokumentere koden og forstå hvordan den fungerer. Dette kan være spesielt nyttig når nye utviklere begynner å arbeide med koden, eller når funksjoner skal vedlikeholdes over tid. Det også gir en sikekrhet for når koden skal endres, at endringene ikke bryte eksisternede funksjonalitet.

Plassering av enhetstester

I Metodebiblioteket kjøres all enhetstester automatisk ved endring i repoen. For at dette skal fungere, må enhetstester i R ligge under mappen tests > testthat og for Python skal de ligge under python > tests.

Importere testthat pakken med

renv::install("testthat")

Koden under tester funksjonen add_floats()

library(testthat)

test_that("add_floats summere korrekt", { 
  result <- add_floats(2, 3) 
  expect_equal(result, 5) 
  result <- add_floats(-1, 1) 
  expect_equal(result, 0) 
  })

Se Eksempler på enhetstester i R (internt SSB) for mer detaljer.

Importerer pakken pytest.

import pytest

Koden under tester funksjonen is_prime ved bruk av assert.

from pathlib import Path

import pandas as pd
import pytest
from pandas import testing as tm

from pytest_examples.functions import is_prime, valuta_omv

def test_is_prime():
    assert is_prime(2) is True
    assert is_prime(3) is True
    assert is_prime(4) is False
    assert is_prime(0) is False
    assert is_prime(-5) is False

Se Eksempler på bruk av pytest (internt SSB) for mer detaljer.

For generelle informasjon om enhetstest skriving se Hadley Wickhams veiledning til testthat for R eller veiledning til pytest for Python.

Du finner mer informasjon om standard og anbefaling til enhetstester i SSB på KVAKK-sidene (internt SSB)