Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Organisera och köra tester med pytest | Testing with unittest and pytest
Python Strukturell Programmering

Organisera och köra tester med pytest

Svep för att visa menyn

När du vill skriva ren, uttrycksfull och lättunderhållen testkod i Python är pytest ett populärt val. Till skillnad från det inbyggda ramverket unittest, som följer en strikt, klassbaserad struktur och kräver specifika assertionsmetoder som self.assertEqual, tillåter pytest att du använder vanliga Python-assert-satser inom enkla funktioner. Detta minskar avsevärt mängden standardkod och gör dina tester mer koncisa, eftersom du inte längre behöver kapsla in logik i komplexa klasshierarkier eller memorera dussintals ramverksspecifika assertionsnamn bara för att verifiera ett enkelt resultat.

En av de mest kraftfulla funktionerna i pytest är dess system för testupptäckt. Genom att helt enkelt köra pytest i din projektkatalog hittar det automatiskt alla filer som matchar mönstret test_*.py eller *_test.py och kör alla funktioner i dessa filer som börjar med test_. Det innebär att du inte manuellt behöver ange vilka tester som ska köras – pytest hanterar det åt dig.

En annan viktig fördel är användningen av fixtures. Fixtures hanterar arbetet med att förbereda och städa upp resurser som dina tester behöver, såsom temporära filer eller databaslänkar, på ett sätt som är lätt att återanvända. Du dekorerar helt enkelt en funktion med @pytest.fixture och begär den sedan som en inparameter i dina testfunktioner. Detta håller din kod modulär och förhindrar att du upprepar samma uppsättningslogik.

För att komma igång med pytest behöver du först installera det. Använd följande kommando i din terminal:

pip install pytest

Detta laddar ner och installerar den senaste versionen av pytest så att du kan börja skriva och köra dina tester direkt.

Här är en praktisk demonstration av hur du använder det för att skriva funktionsbaserade tester och definiera återanvändbara fixtures.

import pytest

# A simple function to test
def add(a, b):
    return a + b

# Define a fixture that provides test data
@pytest.fixture
def sample_numbers():
    return (3, 5)

# Test function using the fixture
def test_add_with_fixture(sample_numbers):
    a, b = sample_numbers
    result = add(a, b)
    assert result == 8

# Another simple test function
def test_add_negative_numbers():
    assert add(-2, -4) == -6
question mark

Vilken är en viktig fördel med att använda pytest jämfört med unittest?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 6

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 5. Kapitel 6
some-alt