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 покажет все сравнения утверждений вместо усечения