pytest-2.6.0: сокращение количества трассировок, новая система предупреждений, совместимость с тестовыми бегунами¶
pytest - это зрелый инструмент тестирования Python, имеющий более 1000 тестов на самом себе, проходящих на многих различных интерпретаторах и платформах.
Релиз 2.6.0 должен быть обратно совместим с 2.5.2, исправляет ряд ошибок и привносит несколько новых функций:
более короткие трассировки по умолчанию: показываются только первая (тестовая функция) и последняя (место сбоя) записи, а те, что между ними - только в «коротком» формате. Используйте
--tb=long
, чтобы вернуть старое поведение - показывать «длинные» записи везде.новая система предупреждений, которая сообщает о странностях во время сбора и выполнения. Например, игнорирование сбора классов Test* с символом
__init__
теперь выдает предупреждение.различные улучшения интеграции nose/mock/unittest
Обратите также внимание, что 2.6.0 отказывается от политики «ноль сообщений об ошибках», потому что, к сожалению, было слишком трудно поддерживать ее. Вместо этого мы теперь будем работать над проблемами, которые были «поддержаны» в трекере проблем https://bitbucket.org/pytest-dev/pytest/issues?status=new&status=open&sort=-votes.
Смотрите документацию по адресу:
Как обычно, вы можете обновиться с pypi через:
pip install -U pytest
Спасибо всем, кто внес свой вклад, среди них:
Бенджамин Петерсон Юрко Господнетич Флорис Бруйнооге Марк Абрамовиц Марк Шлайх Тревор Беколай Бруно Оливейра Алекс Гроенхольм
веселитесь, хольгер крекель
2.6.0¶
исправить issue537: Избегать импорта старого кода реинтерпретации утверждений по умолчанию. Спасибо Бенджамину Петерсону.
исправить issue364: сократить и расширить представление трассировок по умолчанию. Новая опция «–tb=auto» (по умолчанию) будет отображать длинные трассировки только для первой и последней записи. Вы можете получить старое поведение печати всех записей как длинных записей с помощью «–tb=long». Также короткие записи по умолчанию теперь печатаются аналогично «–tb=native».
исправление issue514: переинтерпретация утверждений об атрибутах приватных классов Спасибо Бенджамину Петерсону.
изменить вывод -v для включения полных идентификаторов узлов тестов. Пользователи могут скопировать идентификатор узла из теста, включая номер строки, и использовать его в качестве позиционного аргумента, чтобы запустить только один тест.
исправление проблемы 475: ранняя и понятная ошибка при вызове pytest.raises с неправильным типом исключения.
исправить issue516: сообщить в get-started о текущих зависимостях.
немного почистить setup.py и указать поддерживаемые версии. Спасибо Jurko Gospodnetic за PR.
изменить цвет XPASS на желтый, а не красный, когда тесты запускаются с параметром -v.
исправление проблемы473: решение проблемы, связанной с помещением несвязанного метода в dict класса при двойном исправлении.
исправление проблемы498: если финализатор приспособления не работает, убедитесь, что приспособление все еще недействительно.
исправление проблемы453: результат работы хука pytest_assertrepr_compare теперь экранируется новыми строками, чтобы исключение format_exception не раздувалось.
внутренняя новая система предупреждений: pytest теперь будет выдавать предупреждения, когда обнаружит странности в коллекции или выполнении тестов. Предупреждения отправляются в новый хук pytest_logwarning, который в настоящее время реализован только в терминальном плагине, который отображает предупреждения в итоговой строке и показывает более подробную информацию, если указано -rw (отчет о предупреждениях).
изменение переходит к предупреждениям для тестовых классов с __init__ и callables в тестовых модулях, которые выглядят как тест, но не являются функциями.
исправление issue436: улучшено нахождение начальных файлов conftest из аргументов командной строки путем использования результата parse_known_args, а не прежней шаткой эвристики. Спасибо Марку Абрамовицу за тесты и первоначальные подходы к исправлению в этой области.
исправить проблему #479: правильно обрабатывать исключения nose/unittest(2) SkipTest во время сбора/загрузки тестовых модулей. Спасибо Марку Шлайху за полный PR.
исправить issue490: включить pytest_load_initial_conftests в документацию и улучшить docstring.
исправить issue472: уточнить, что
pytest.config.getvalue()
не может работать, если он запускается перед разбором командной строки.объединение PR123: улучшена интеграция с декоратором mock.patch в тестах.
исправление issue412: работа с потоками stdout/stderr FD-уровня теперь происходит без сбоев.
исправление проблемы483: trial/py33 теперь работает правильно. Спасибо Daniel Grana за PR.
улучшить пример интеграции pytest с «python setup.py test», который теперь имеет общую опцию «-a» или «–pytest-args», где вы можете передать дополнительные опции в виде строки с кавычками. Спасибо Тревору Беколаю.
упростил внутренний механизм захвата и сделал его более устойчивым к тестам или установкам, изменяющим FD1/FD2, также теперь он лучше интегрирован с pytest.pdb() в одиночных тестах.
улучшения в обнаружении утечек в собственном тестовом наборе pytest, благодаря PR от Марка Абрамовица
исправить issue492: избежать утечки в test_writeorg. Спасибо Марку Абрамовицу.
исправление проблемы493: не запускайте тесты в каталоге doc с
python setup.py test
(для этого используйте tox -e doctesting).исправление issue486: улучшение отчетности и обработки ранних сбоев загрузки conftest
некоторая очистка и упрощение внутренней обработки тестов.
работать немного усерднее для разрыва ссылочных циклов при перехвате исключений. Спасибо Jurko Gospodnetic.
исправить issue443: исправьте примеры пропуска, чтобы использовать правильное сравнение. Спасибо Алексу Гроенхольму.
поддерживать атрибут nose-style
__test__
на модулях, классах и функциях, включая классы в стиле unittest. Если установлено значение False, тест не будет собираться.исправить issue512: показывать «<notset>» для аргументов, которые могут быть не заданы в плагине monkeypatch. Улучшает вывод в документации.
избегать импорта «py.test» (старый псевдоним модуля «pytest»)