pytest: помогает писать более качественные программы¶
Фреймворк pytest
позволяет легко писать небольшие, читабельные тесты и может масштабироваться для поддержки сложного функционального тестирования приложений и библиотек.
pytest
Требуется: Python 3.7+ или PyPy3.
Имя пакета 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-7.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 =============================
Из-за подробной интроспекции утверждений в pytest
используются только простые утверждения assert
. См. раздел Get started для базового введения в использование pytest.
Характеристики¶
Подробная информация об отказах assert statements (нет необходимости запоминать имена
self.assert*
)Auto-discovery тестовых модулей и функций
Modular fixtures для управления небольшими или параметризованными долгоживущими тестовыми ресурсами
Возможность запуска unittest (включая пробные) и nose тестовых наборов из коробки
Python 3.7+ или PyPy 3
Богатая архитектура плагинов, насчитывающая более 800+ external plugins и процветающее сообщество
Документация¶
Get started - установите pytest и постигните его основы всего за двадцать минут
How-to guides - пошаговые руководства, охватывающие широкий спектр случаев использования и потребностей
Reference guides - включает полную справку по API pytest, списки подключаемых модулей и многое другое
Explanation - история вопроса, обсуждение ключевых тем, ответы на вопросы более высокого уровня
Ошибки/Запросы¶
Пожалуйста, используйте GitHub issue tracker для отправки сообщений об ошибках или запросов о возможностях.
Поддержка pytest¶
Open Collective - это онлайн-платформа финансирования для открытых и прозрачных сообществ. Она предоставляет инструменты для привлечения денег и обмена финансами в условиях полной прозрачности.
Это платформа, которую выбирают частные лица и компании, желающие делать разовые или ежемесячные пожертвования непосредственно на проект.
Более подробную информацию смотрите в pytest collective.
pytest для предприятия¶
Доступен в рамках подписки Tidelift.
Сопровождающие pytest и тысячи других пакетов сотрудничают с Tidelift, чтобы обеспечить коммерческую поддержку и сопровождение зависимостей с открытым исходным кодом, которые вы используете для создания своих приложений. Экономьте время, снижайте риски и улучшайте качество кода, платя при этом сопровождающим именно тех зависимостей, которые вы используете.
Безопасность¶
pytest никогда не был связан с уязвимостью безопасности, но в любом случае, чтобы сообщить об уязвимости безопасности, используйте Tidelift security contact. Tidelift будет координировать исправление и раскрытие информации.