Я (ab) использовал doctest
вместо unittest
, когда я начал свой проект gmpy много лет назад - вы можете просмотреть его источники и убедиться, что вся функциональность тщательно протестирована с doctests (функциональность предоставляется C-кодированным расширением Python, и в прошлый раз, когда я инструктировал его для измерения покрытия, у меня было покрытие более 95%). Почему я это сделал? Потому что doctest
был совершенно новым, как и gmpy
, и мне было любопытно посмотреть, как далеко я смогу его продвинуть.
Ответ: действительно, очень далеко, но определенно не стоит (новинка изнашивается, но вы не хотите переписывать все свои тесты, поэтому тесты gmpy по-прежнему все-doctests). Чрезвычайная хрупкость док-тестов, когда даже самое маленькое исправление опечатки в сообщении нарушает тест, является настоящей проблемой, когда они подвергаются подобному насилию. Это похоже на традиционные интеграционные тесты, основанные на сравнении результатов с «золотым» (известным-хорошим) ожидаемым результатом: их легко написать с первого раза, но вы раскаетесь в свободное время после нескольких лет исправления случайных поломок тестов; ).
Если вы находите стиль unittest
обременительным, есть и другие отличные альтернативы, которые по-прежнему означают для использования в модульных тестах, такие как py.test и Нос - doctest
действительно предназначен для другой цели (поддержка документов, а не общих юнит-тестов), и хотя, конечно, стоит добавить в свой тест любые написанные вами тесты для целей документов батарея, она не стоит головной боли при испытаниях , заменяя единичные испытания ею.