Перейти к содержанию

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 скоординирует исправление и раскрытие информации.