::install("testthat") renv
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.
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
Koden under tester funksjonen add_floats()
library(testthat)
test_that("add_floats summere korrekt", {
<- add_floats(2, 3)
result expect_equal(result, 5)
<- add_floats(-1, 1)
result 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)