Урок 47 pytest

Проверяем, что код работает правильно

⏱ ~12 мин чтения· 📗 Средний

Зачем нужны тесты?

Тесты автоматически проверяют, что ваш код работает правильно. Особенно важно при изменениях: тесты сразу покажут, если что-то сломалось.

Установка и первый тест

# Установка
pip install pytest

# Файл: mycode.py
def double(x):
    return x * 2

# Файл: test_mycode.py
from mycode import double

def test_double_positive():
    assert double(2) == 4

def test_double_zero():
    assert double(0) == 0

def test_double_negative():
    assert double(-3) == -6
# Запуск тестов в терминале:
pytest test_mycode.py

# Результат:
# 3 passed in 0.01s

Полезные проверки

import pytest

def divide(a, b):
    if b == 0:
        raise ValueError("Деление на ноль!")
    return a / b

def test_divide_normal():
    assert divide(10, 2) == 5.0
    assert divide(7, 2) == 3.5

def test_divide_by_zero():
    with pytest.raises(ValueError):
        divide(10, 0)

def test_float_comparison():
    assert divide(1, 3) == pytest.approx(0.33333, rel=1e-3)

Параметризованные тесты

@pytest.mark.parametrize("a, b, expected", [
    (2, 3, 6),
    (-1, 5, -5),
    (0, 100, 0),
    (7, 7, 49),
])
def test_multiply(a, b, expected):
    assert a * b == expected