py.test 2.2.0: маркировка тестов++, параметризация++ и профилирование длительности

pytest-2.2.0 - это совместимый с тестовым комплектом выпуск популярного инструмента тестирования py.test. Плагины могут нуждаться в обновлении. Он поставляется с такими улучшениями:

  • более простая и мощная параметризация тестов:

    • новый декоратор @pytest.mark.parametrize для запуска тестов с разными аргументами

    • новый API metafunc.parametrize() для самостоятельной параметризации аргументов

    • см. примеры на http://pytest.org/en/stable/example/how-to/parametrize.html

    • Обратите внимание, что API, связанные с parametrize(), все еще являются экспериментальными и могут измениться в будущих релизах.

  • улучшенное обращение с тестовыми маркерами и усовершенствованный механизм маркировки:

    • Опция «-m markexpr» для выбора тестов в соответствии с их маркой

    • новая ini-переменная «markers» для регистрации тестовых маркеров для вашего проекта

    • новый «–strict» выводит из строя с ошибкой при использовании незарегистрированных маркеров.

    • см. примеры на http://pytest.org/en/stable/example/markers.html

  • профилирование длительности: новая опция «–duration=N» показывает N самых медленных вызовов выполнения теста или установки/перезагрузки. Это наиболее полезно, если вы хотите выяснить, где находится ваш самый медленный тестовый код.

  • также в версии 2.2.0 реализовано более активное обращение к функциям teardown/finalizers, что приводит к более качественному и точному отчету при их сбое

Кроме того, имеется обычный набор исправлений ошибок, а также очистка собственного тестового набора pytest, позволяющая ему работать в более широком диапазоне окружений.

Для получения общей информации смотрите обширную документацию с примерами здесь:

Если вы хотите установить или обновить pytest, вы можете просто набрать:

pip install -U pytest # or
easy_install -U pytest

Спасибо Ronny Pfannschmidt, David Burns, Jeff Donner, Daniel Nouri, Alfredo Deza и всем, кто оставил отзывы или прислал сообщения об ошибках.

лучший, хольгер крикет

замечания по несовместимости

Хотя тестовые наборы должны работать без изменений, вам может понадобиться обновить плагины:

  • Вам необходима новая версия плагина pytest-xdist (1.7) для распространения тестовых запусков.

  • Другим плагинам может потребоваться обновление, если они реализуют хук pytest_runtest_logreport, который теперь вызывается безоговорочно для фаз установки/исчезновения фиксации теста. Вы можете игнорировать сбои установки/опускания, вставив «if rep.when != „call“: return» или что-то подобное. Обратите внимание, что большинство кода, вероятно, «просто» работает, потому что хук уже был вызван для неудачных фаз установки/снятия теста, поэтому плагин уже должен быть готов к обработке таких сообщений.

Изменения между 2.1.3 и 2.2.0

  • исправить проблему90: ввести ускоренное сворачивание тестовых элементов, чтобы функция сворачивания вызывалась раньше.

  • добавить всемогущую функцию metafunc.parametrize, которая позволяет параметризовать аргументы тестовых функций в несколько этапов и, следовательно, из независимых плагинов и мест.

  • добавить хелпер @pytest.mark.parametrize, который позволяет легко вызывать тестовую функцию с различными значениями аргументов.

  • Добавьте примеры на страницу примеров «parametrize», включая быстрый перенос сценариев Test и новой функции parametrize и декоратора.

  • ввести регистрацию для помощников «pytest.mark.*» через ini-файлы или через хуки плагинов. Также введена опция «–strict», которая будет рассматривать незарегистрированные маркеры как ошибки, что позволит избежать опечаток и поддерживать хорошо описанный набор маркеров для вашего набора тестов. Смотрите примеры на http://pytest.org/en/stable/how-to/mark.html и по ссылкам.

  • issue50: ввести опцию «-m marker» для отбора тестов на основе маркеров (это более строгая и предсказуемая версия «-k», поскольку «-m» соответствует только полным маркерам и имеет более очевидные правила для и/или семантики.

  • новая функция для оптимизации скорости ваших тестов: опция –durations=N для отображения N самых медленных вызовов теста и методов установки/выключения.

  • исправление проблемы87: –pastebin теперь работает с python3

  • исправление проблемы89: –pdb с неожиданными исключениями в doctest работает более осмысленно

  • исправление и очистка собственного набора тестов pytest для предотвращения утечки FD

  • исправление проблемы83: ссылка на сгенерированный список funcarg

  • исправление проблемы74: имена модулей pyarg теперь проверяются на ложные срабатывания imp.find_module

  • исправление совместимости с вариантами использования twisted/trial-11.1.0

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