Нос против pytest - каковы (субъективные) различия, которые должны заставлять меня выбирать?

Я начал работать над довольно большим (многопоточным) проектом Python с множеством (единичных) тестов. Самая важная проблема заключается в том, что для запуска приложения требуется предустановленная среда, которая реализуется диспетчером контекста. До сих пор мы использовали исправленную версию бегуна unit test, который запускал тесты внутри этого менеджера, но это не позволяет переключать контекст между различными тестовыми модулями.

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

Я просматривал документацию как носа, так и pytest, и насколько я могу видеть, что большая часть этих библиотек по существу поддерживает те же функции, за исключением того, что ее можно назвать по-разному или требуют немного другого синтаксиса, Кроме того, я заметил некоторые небольшие различия в доступных плагинах (нос имеет поддержку многопроцессорности, pytest, похоже, не выглядит)

Так кажется, черт находится в деталях, что означает (часто по крайней мере) в личном вкусе, и нам лучше пойти с библиотекой, которая лучше всего соответствует нашему личному вкусу.

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

Ответ 1

Я использовал Nose, потому что это было по умолчанию с Pylons. Мне это совсем не нравилось. У него были конфигурационные усики в нескольких местах, практически все, казалось, было сделано с недооцененным плагином, что сделало его еще более косвенным и запутанным, и поскольку он по умолчанию выполнял тесты, он регулярно разбивался на трассировки Unicode, скрывая источники ошибок.

Я был очень доволен py.test последние пару лет. Возможность написать тест с помощью assert из коробки заставляет меня ненавидеть писать тесты меньше, а взломать все, что мне нужно на вершине ядра, было довольно легко. Вместо фиксированного интерфейса плагина у него просто кучи крючков и довольно понятный исходный код, если вам нужно копать дальше. Я даже написал адаптер для запуска тестов Testify под py.test и имел больше проблем с Testify, чем с py.test.

Тем не менее, я слышал, что у носа есть плагины для бесклассовых тестов и утверждают интроспекцию в наши дни, так что вы, вероятно, тоже добьетесь успеха. Я все еще чувствую, что могу ударить по земле, работая с py.test, хотя, и я могу понять, что происходит, когда он ломается.