Как использовать unit тест с параметрами в pytest
Python
Middle
Без компании
Как использовать unit тест с параметрами в pytest
Ответы
В pytest параметризованные тесты можно создать с помощью декоратора `@pytest.mark.parametrize`. Он позволяет передавать разные наборы данных в один тест, избегая дублирования кода.
Пример:
```
import pytest
@pytest.mark.parametrize("input, expected", [
(2, 4),
(3, 9),
(5, 25)
])
def test_square(input, expected):
assert input ** 2 == expected
```
Ключевые моменты:
- Первый аргумент декоратора - строка с именами параметров через запятую
- Второй аргумент - список кортежей с тестовыми данными
- Можно использовать несколько декораторов для комбинаторики параметров
- Для сложных случаев можно передавать параметры через фикстуры
Для удобства можно выносить параметры в отдельную переменную:
```
test_data = [(1, 1), (2, 4), (3, 9)]
@pytest.mark.parametrize("x,expected", test_data)
```