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