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»)

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