Ответ
В Python существует несколько фреймворков для тестирования, но основными являются:
unittest
: Входит в стандартную библиотеку Python. Основан на xUnit, требует создания классов для тестов и использования специальныхassert
методов (например,self.assertEqual()
).pytest
: Де-факто стандарт в сообществе. Отличается простым синтаксисом (использует стандартныйassert
), мощной системой фикстур, плагинами и подробными отчетами об ошибках.
Написание теста с pytest
pytest
автоматически обнаруживает файлы test_*.py
или *_test.py
и функции test_*
в них.
1. Код для тестирования (например, calculator.py
):
# calculator.py
class CalculationError(Exception):
pass
def add(a: int, b: int) -> int:
if not isinstance(a, int) or not isinstance(b, int):
raise TypeError("Оба аргумента должны быть целыми числами")
return a + b
2. Файл с тестами (test_calculator.py
):
# test_calculator.py
import pytest
from calculator import add, CalculationError
# Простой тест на корректное сложение
def test_add_positive_numbers():
assert add(2, 3) == 5
# Параметризованный тест для проверки нескольких случаев
@pytest.mark.parametrize("a, b, expected", [
(1, 2, 3), # Положительные числа
(-1, -1, -2), # Отрицательные числа
(-5, 5, 0), # Смешанные числа
(0, 0, 0) # Нули
])
def test_add_various_cases(a, b, expected):
assert add(a, b) == expected
# Тест на проверку вызова исключения
def test_add_raises_type_error_for_strings():
with pytest.raises(TypeError):
add("a", "b")
Для запуска тестов достаточно выполнить в терминале команду pytest
. Фреймворк сам найдет и выполнит все тесты, предоставив детальный отчет.