Установка и окружение
| Команда | Описание |
pip install pytest | Установить pytest |
pip show pytest | Проверить версию pytest |
python -m venv venv | Создать виртуальное окружение |
venv\Scripts\activate | Активировать окружение (Windows) |
deactivate | Деактивировать окружение |
Запуск тестов
| Команда | Описание |
pytest | Запустить все тесты в текущей директории |
pytest -v | Подробный вывод (verbose) |
pytest -k "sum" | Запустить тесты, в имени которых есть «sum» |
pytest -m positive_test | Запустить тесты с маркером positive_test |
pytest --markers | Показать зарегистрированные маркеры |
pytest -h | Справка по всем опциям pytest |
pytest test_calculator.py | Запустить конкретный файл |
pytest test_calculator.py::test_sum | Запустить конкретный тест |
Соглашения об именовании
| Что | Правило | Пример |
| Файл тестов | Начинается с test_ или заканчивается на _test | test_calculator.py |
| Функция теста | Начинается с test_ | def test_sum_positive(): |
| Фикстура | Декоратор @pytest.fixture | def calculator(): |
Фикстуры
| Код | Описание |
@pytest.fixture | Объявить функцию фикстурой |
@pytest.fixture(scope="module") | Фикстура для всего модуля |
@pytest.fixture(scope="session") | Фикстура для всей сессии |
conftest.py | Файл с общими фикстурами для директории |
Проверки (assertions)
| Код | Описание |
assert value == expected | Проверка равенства |
assert value != expected | Проверка неравенства |
assert value is None | Проверка на None |
assert value in collection | Проверка вхождения |
pytest.raises(ExcType) | Ожидаемое исключение |
pytest.approx(expected) | Сравнение float с погрешностью |
Маркировки
| Маркер | Описание |
@pytest.mark.skip(reason="...") | Безусловный пропуск |
@pytest.mark.skipif(condition, reason="...") | Условный пропуск |
@pytest.mark.xfail | Ожидаемый провал |
@pytest.mark.xfail(strict=True) | Строгий xfail: xpass считается ошибкой |
@pytest.mark.имя_маркера | Пользовательский маркер |
Параметризация
| Код | Описание |
@pytest.mark.parametrize('a,b', [(1,2),(3,4)]) | Запустить тест с каждым набором |
pytest -v | Показать все варианты параметров |
Конфигурация pytest.ini
# pytest.ini
[pytest]
python_functions = *sum*
markers =
positive_test: Тесты для позитивных сценариев
negative_test: Тесты для негативных сценариев