pytest: помогает писать лучшие программы
Фреймворк pytest упрощает написание небольших, читаемых тестов и может масштабироваться для поддержки сложного функционального тестирования приложений и библиотек.
Имя пакета на PyPI: pytest
Быстрый пример
# content of test_sample.py
def inc(x):
return x + 1
def test_answer():
assert inc(3) == 5
Чтобы выполнить:
$ pytest
=========================== test session starts ============================
platform linux -- Python 3.x.y, pytest-9.x.y, pluggy-1.x.y
rootdir: /home/sweet/project
collected 1 item
test_sample.py F [100%]
================================= FAILURES =================================
_______________________________ test_answer ________________________________
def test_answer():
> assert inc(3) == 5
E assert 4 == 5
E + where 4 = inc(3)
test_sample.py:6: AssertionError
========================= short test summary info ==========================
FAILED test_sample.py::test_answer - assert 4 == 5
============================ 1 failed in 0.12s =============================
Благодаря подробной интроспекции утверждений (assertion introspection) в pytest используются только обычные инструкции assert. Базовое введение в использование pytest см. в разделе Get started.
Возможности
Подробная информация о падении assert-выражений (не нужно помнить имена self.assert*)
Автообнаружение тестовых модулей и функций
Модульные фикстуры для управления небольшими или параметризованными, «долго живущими» ресурсами для тестов
Из коробки может запускать наборы тестов unittest (включая trial)
Python 3.10+ или PyPy 3
Богатая архитектура плагинов: более 1300+ внешних плагинов и активное сообщество
Документация
Get started — установить pytest и освоить основы всего за двадцать минут
How-to guides — пошаговые руководства, охватывающие широкий спектр сценариев и потребностей
Reference guides — включает полную справку по API pytest, списки плагинов и другое
Explanation — фон, обсуждение ключевых тем, ответы на более «высокоуровневые» вопросы
Ошибки/запросы
Пожалуйста, используйте трекер задач GitHub, чтобы сообщать об ошибках или запрашивать возможности.
Поддержать pytest
Open Collective — онлайн-платформа финансирования для открытых и прозрачных сообществ. Она предоставляет инструменты для сбора средств и публикации финансов в формате полной прозрачности.
Это платформа, которую выбирают частные лица и компании, желающие делать разовые или ежемесячные пожертвования напрямую проекту.
Подробнее см. в pytest collective.
pytest для enterprise
Доступно в составе подписки Tidelift.
Мейнтейнеры pytest и тысяч других пакетов работают с Tidelift, чтобы предоставлять коммерческую поддержку и сопровождение зависимостей с открытым исходным кодом, которые вы используете для разработки приложений. Экономьте время, снижайте риски и улучшайте качество кода, при этом оплачивая поддержку именно тех зависимостей, которые вы используете.
Безопасность
pytest никогда не был связан с уязвимостями безопасности, но в любом случае, чтобы сообщить об уязвимости, используйте контакт Tidelift по безопасности. Tidelift скоординирует исправление и раскрытие информации.