Продолжаю сравнивать различные 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