Продолжаю сравнивать различные python-библиотеки. На этот раз выбор пал на два тест-фреймворка: nose и pytest. Первый позиционирует себя как unit test framework, второй - как для модульных, так и для функциональных и других тестов. Но так, как грань между модульными, интеграционными и функциональными тестами достаточно тонкая, то ее часто не замечают. Поэтому, эти библиотеки можно использовать для всех вышеперечисленных тестов.

Краткое сравнение функциональности фреймворков (тут я выбрал наиболее важные для меня вещи):

  nose pytest
Репозиторий  https://github.com/nose-devs/nose https://bitbucket.org/hpk42/pytest/
Дата последнего изменения 15.02.2012 6.02.2012 
Последняя версия 1.1.3 2.2.3 
Лицензия   As is 
Документация  +, подробная, легко разобраться +, подробная, легко разобраться 
Запуск определенного набора тестов +
Генерация отчета в формате xUnit +
Настройка детализации отчетов  +  
Изменение стандартного наименования
+
Поддержка fixtures fixeures, setup* и *teardown методы +, parametrized tests 
Интеграция с django +, сторонний плагин +, сторонний плагин 
Соответствие PEP8  +
Расширяемость +, механизм плагинов +, механизм плагинов 
Интеграция с setuptools  +/- 

Минимальными требованиями к фреймворкам все более-менее понятно. В обоих есть необходимые фичи. А так как, в данный момент, мне сложно предположить что потребуется в будущем, то выбирать придется исходя из удобства использования, что является достаточно субъективным критерием.

Nose. Легко писать тесты, если до этого был опыт работы со стандартным модулем unittests или ТеstNG/nUnit в Java и .NET соответственно.

pytest. Мне показался более легким для начинающих. Может из-за более удобной для меня документации, но времени на то, чтоб написать тест для “hello world” приложения мне потребовалось меньше, чем при использовании nose.

Что буду использовать на текущем проекте - пока не решил. Скорее всего, главную роль сыграют плагины для интеграции с django и continius integration


Comments are closed