Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Introduksjon til Testing i Python | Beherske Pytest-Rammeverket
Python Strukturert Programmering

bookIntroduksjon til Testing i Python

I vår Feilhåndtering-seksjon utforsket vi hvordan man håndterer både syntaksfeil og kjøretidsfeil, men vi gikk ikke nærmere inn på håndtering av logiske feil. I denne seksjonen skal vi se på to typer testing som er avgjørende for å validere logikken i applikasjonene våre: manuell og automatisert testing.

Testing deles grovt inn i disse to kategoriene. Manuell testing innebærer at menneskelige testere utfører tester ved å samhandle med applikasjonen og verifisere at funksjonene fungerer i henhold til kravene. Denne typen testing er nyttig, men kan være tidkrevende og utsatt for menneskelige feil.

Automatisert testing bruker derimot skript og verktøy for å utføre tester automatisk, uten direkte menneskelig innblanding, og sikrer at applikasjonen oppfører seg som forventet. Dette gjør ikke bare testprosessen raskere, men øker også nøyaktigheten og konsistensen.

Introduksjon til Testdrevet Utvikling (TDD)

En sentral metodikk innen automatisert testing er Testdrevet Utvikling (TDD). TDD er en innovativ utviklingsprosess hvor tester skrives før selve koden. Prosessen følger en enkel syklus: skriv en test, kjør testen (som i utgangspunktet skal feile), skriv minimumskoden som trengs for å bestå testen, og refaktorer deretter koden for å oppfylle kravene til ryddighet og effektivitet.

Oversikt over Unittest og Pytest-rammeverk

Python tilbyr flere rammeverk for å skrive og kjøre tester, hvor Unittest og Pytest er to av de mest populære.

Unittest

Unittest er Pythons innebygde testrammeverk. Unittest er klassebasert og krever at du organiserer testene dine i klasser som underklasser av unittest.TestCase.

Pytest

Pytest er et kraftig tredjeparts testrammeverk som støtter enklere testtilfeller for både enkle og komplekse testsituasjoner. I motsetning til Unittest lar Pytest deg skrive testfunksjoner uten å måtte pakke dem inn i klasser.

Testing av en funksjon for gjennomsnittsberegning

La oss se på en enkel funksjon som beregner gjennomsnittet av to tall, og hvordan den kan testes ved hjelp av både Unittest og Pytest.

Function to be Tested:

1234
def calculate_average(num1, num2): return (num1 + num2) / 2 print(calculate_average(3, 5))
copy

Testing med Unittest

import unittest

class TestAverageCalculation(unittest.TestCase):
    def test_average(self):
        result = calculate_average(10, 20)
        self.assertEqual(result, 15)

Testing med pytest

import pytest

def test_average():
    assert calculate_average(10, 20) == 15

Selv om Unittest er utmerket for utviklere som er kjent med xUnit-formatet og foretrekker en strukturert, objektorientert tilnærming til testing, passer Pytest for de som ønsker mer fleksibilitet og enkelhet, samt kraftige funksjoner for komplekse tester som ikke like lett håndteres av Unittest.

Vi sees i neste kapittel!

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 1

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Suggested prompts:

Can you explain more about logical errors and how to detect them?

What are the main differences between manual and automated testing?

Could you provide more examples of using Unittest and Pytest?

bookIntroduksjon til Testing i Python

Sveip for å vise menyen

I vår Feilhåndtering-seksjon utforsket vi hvordan man håndterer både syntaksfeil og kjøretidsfeil, men vi gikk ikke nærmere inn på håndtering av logiske feil. I denne seksjonen skal vi se på to typer testing som er avgjørende for å validere logikken i applikasjonene våre: manuell og automatisert testing.

Testing deles grovt inn i disse to kategoriene. Manuell testing innebærer at menneskelige testere utfører tester ved å samhandle med applikasjonen og verifisere at funksjonene fungerer i henhold til kravene. Denne typen testing er nyttig, men kan være tidkrevende og utsatt for menneskelige feil.

Automatisert testing bruker derimot skript og verktøy for å utføre tester automatisk, uten direkte menneskelig innblanding, og sikrer at applikasjonen oppfører seg som forventet. Dette gjør ikke bare testprosessen raskere, men øker også nøyaktigheten og konsistensen.

Introduksjon til Testdrevet Utvikling (TDD)

En sentral metodikk innen automatisert testing er Testdrevet Utvikling (TDD). TDD er en innovativ utviklingsprosess hvor tester skrives før selve koden. Prosessen følger en enkel syklus: skriv en test, kjør testen (som i utgangspunktet skal feile), skriv minimumskoden som trengs for å bestå testen, og refaktorer deretter koden for å oppfylle kravene til ryddighet og effektivitet.

Oversikt over Unittest og Pytest-rammeverk

Python tilbyr flere rammeverk for å skrive og kjøre tester, hvor Unittest og Pytest er to av de mest populære.

Unittest

Unittest er Pythons innebygde testrammeverk. Unittest er klassebasert og krever at du organiserer testene dine i klasser som underklasser av unittest.TestCase.

Pytest

Pytest er et kraftig tredjeparts testrammeverk som støtter enklere testtilfeller for både enkle og komplekse testsituasjoner. I motsetning til Unittest lar Pytest deg skrive testfunksjoner uten å måtte pakke dem inn i klasser.

Testing av en funksjon for gjennomsnittsberegning

La oss se på en enkel funksjon som beregner gjennomsnittet av to tall, og hvordan den kan testes ved hjelp av både Unittest og Pytest.

Function to be Tested:

1234
def calculate_average(num1, num2): return (num1 + num2) / 2 print(calculate_average(3, 5))
copy

Testing med Unittest

import unittest

class TestAverageCalculation(unittest.TestCase):
    def test_average(self):
        result = calculate_average(10, 20)
        self.assertEqual(result, 15)

Testing med pytest

import pytest

def test_average():
    assert calculate_average(10, 20) == 15

Selv om Unittest er utmerket for utviklere som er kjent med xUnit-formatet og foretrekker en strukturert, objektorientert tilnærming til testing, passer Pytest for de som ønsker mer fleksibilitet og enkelhet, samt kraftige funksjoner for komplekse tester som ikke like lett håndteres av Unittest.

Vi sees i neste kapittel!

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 1
some-alt