Ответ
Unit-тест проверяет корректность работы небольшого, изолированного фрагмента кода, как правило, одной функции или метода. В Python для этого чаще всего используют фреймворки pytest или unittest.
Классическая структура теста следует паттерну Arrange-Act-Assert (AAA):
- Arrange (Подготовка): Инициализация переменных и настройка окружения.
- Act (Действие): Вызов тестируемой функции с подготовленными данными.
- Assert (Проверка): Сравнение полученного результата с ожидаемым.
Пример с pytest (рекомендуется)
pytest более лаконичен и использует стандартный оператор assert.
# my_module.py
def add(a, b):
if not isinstance(a, (int, float)) or not isinstance(b, (int, float)):
raise TypeError("Оба аргумента должны быть числами")
return a + b
# test_my_module.py
import pytest
from my_module import add
# Тест на корректное сложение
def test_add_positive_numbers():
# Arrange (Подготовка)
num1 = 10
num2 = 5
# Act (Действие)
result = add(num1, num2)
# Assert (Проверка)
assert result == 15
# Тест на обработку исключений
def test_add_with_invalid_types():
with pytest.raises(TypeError):
add("a", 2)
Пример с unittest
unittest — встроенный в Python модуль, требующий создания классов для тестов.
# test_my_module_unittest.py
import unittest
from my_module import add
class TestAddFunction(unittest.TestCase):
def test_add_positive_numbers(self):
# AAA в одном выражении
self.assertEqual(add(10, 5), 15)
def test_add_with_invalid_types(self):
with self.assertRaises(TypeError):
add("a", 2)
Запуск тестов:
- Для
pytest:pytest - Для
unittest:python -m unittest discover