pytest-2.3: улучшенные приспособления / лучшая интеграция с unittest

pytest-2.3 содержит множество значительных улучшений для управления фикстурами/функаргами и параметризованного тестирования в Python. Теперь повторное выполнение одних и тех же тестов с разными экземплярами фикстур стало проще, эффективнее и предсказуемее. Кроме того, вы можете напрямую объявлять «область действия» кэширования фикстур, чтобы зависимые тесты во всем вашем тестовом наборе могли с легкостью повторно использовать базу данных или другие дорогостоящие объекты фикстур. Наконец, функции фикстуры (ранее известные как фабрики funcarg) могут использовать другие фикстуры, что позволяет создать полностью модульную конструкцию фикстуры с возможностью повторного использования.

Для получения подробной информации и примеров в стиле учебника см:

Более того, теперь есть поддержка использования фикстур/функций pytest с наборами в стиле unittest, примеры смотрите здесь:

Кроме того, теперь ожидается, что больше наборов unittest-тестов будут «просто работать» с pytest.

Все изменения обратно совместимы, и вы сможете продолжать использовать свои наборы тестов и сторонние плагины, которые работали с pytest-2.2.4.

Если вас интересует точное обоснование (включая примеры) эволюции исправлений pytest-2.3, обратитесь к http://pytest.org/en/stable/funcarg_compare.html.

Для получения общей информации об установке и начале работы:

Доступ к документам и PDF, как обычно, по адресу:

а более подробную информацию для тех, кто уже знаком с pytest, можно найти в CHANGELOG ниже.

Особая благодарность за этот выпуск выражается Флорису Бруйнооге, Алексу Окрушко, Карлу Мейеру, Ронни Пфанншмидту, Бенджамину Петерсону и Алексу Гейнору за помощь в создании и интеграции новых функций. Ронни и Флорис также помогли исправить ряд ошибок, и еще больше людей помогли, предоставив отчеты об ошибках.

веселитесь, хольгер крекель

Изменения между 2.2.4 и 2.3.0

  • исправление issue202 - улучшены автоматические имена для параметризованных тестовых функций

  • исправить проблему139 - ввести @pytest.fixture, который позволяет напрямую определять и параметризировать фабрики funcarg. Ввести новый маркер @pytest.setup, позволяющий писать функции настройки, которые принимают funcarg.

  • исправление проблемы198 - приспособления conftest не находились на windows32 в некоторых случаях с вложенными структурами каталогов из-за проблем с манипуляцией путями

  • исправить проблему193 пропускать тестовые функции, которые были параметризованы с пустыми наборами параметров

  • исправление совместимости с python3.3, в основном это касается битов, которые ранее зависели от упорядочивания диктов

  • ввести переупорядочивание тестов по ресурсам и параметризации, которое имеет приоритет перед обычным упорядочиванием по файлам

  • исправление проблемы185 monkeypatching time.time не приводит к сбою pytest

  • исправить проблему172 дублирующий вызов функций pytest.setup-decoratored setup_module

  • исправить построение junitxml=path так, чтобы если тесты меняют текущий рабочий каталог и путь является относительным, то он правильно строился из исходного текущего рабочего каталога.

  • исправьте пример «python setup.py test», чтобы он вызывал корректный возврат «errno»

  • исправить issue165 - исправить неработающие ссылки на документы и упомянуть stackoverflow для FAQ

  • перехватывать unicode-проблемы при записи представлений о сбоях в терминал, чтобы предотвратить крах всей сессии

  • исправьте путаницу xfail/skip: теперь отметка skip или императивный pytest.skip будут иметь приоритет перед xfail-маркерами, потому что мы не можем определить статус xfail/xpass в случае пропуска. см. также: http://stackoverflow.com/questions/11105828/in-py-test-when-i-explicitly-skip-a-test-that-is-marked-as-xfail-how-can-i-get.

  • всегда сообщать об установленных сторонних плагинах в заголовке тестового запуска

  • исправление проблемы160: о неудачной настройке тестов, помеченных xfail, следует сообщать как xfail (не xpass)

  • исправление проблемы128: показывать вывод захвата при использовании capsys/capfd

  • исправить проблему179: правильно отображать цепочку зависимостей фабрик

  • pluginmanager.register(…) теперь выдает ValueError, если плагин уже зарегистрирован или его имя занято

  • исправить issue159: улучшить https://docs.pytest.org/en/6.0.1/faq.html, особенно в отношении «волшебной» истории, также упомянуть pytest-django, пробную версию и интеграцию unittest.

  • сделать request.keywords и node.keywords доступными для записи. Все узлы коллекции-потомки будут видеть значения ключевых слов. Ключевые слова - это словари, содержащие маркеры и другую информацию.

  • исправление проблемы 178: бинарные экраны xml теперь обернуты в py.xml.raw

  • исправление проблемы 176: правильно перехватывать встроенный AssertionError, даже когда мы заменили AssertionError подклассом на уровне python

  • обнаружение фабрики больше не приводит к сбоям при использовании магических глобальных вызываемых объектов, которые не предоставляют вменяемого объекта __code__ (например, mock.call).

  • исправление проблемы 182: testdir.inprocess_run теперь учитывает переданные плагины

  • исправление проблемы 188: убедитесь, что sys.exc_info чист на python2

    перед вызовом в тест

  • исправить проблему 191: добавить поддержку метода unittest TestCase runTest

  • исправление проблемы 156: monkeypatch правильно обрабатывает дескрипторы уровня класса

  • уточнения отчетности:

    • pytest_report_header теперь получает «startdir», так что вы можете использовать startdir.bestrelpath(yourpath), чтобы показать хороший относительный путь

    • позволять плагинам реализовывать как pytest_report_header, так и pytest_sessionstart (sessionstart вызывается первым).

    • не показывать отмененную строку причины, если ее нет

    • py.test -vv покажет все сравнения утверждений вместо усечения

Вернуться на верх