Запустите интеграционные тесты Python в среде pBuilder
Я собрал пакет Debian из проекта Python, который зависит от работы нескольких пакетов Debian. Проект Python также содержит модульные и интеграционные тесты (с использованием py.test).
Поскольку мой проект зависит от некоторых пакетов Debian, мне нужно установить эти пакеты в тестовой среде, и они должны убедиться, что мой модуль работает правильно вместе с этими пакетами (я хочу убедиться, что мой модуль не ломается при обновлениях этих библиотек).
Я хочу поместить конфигурацию и выполнение этих тестовых сред в Makefile. Эти тесты должны выполняться как на рабочей станции разработчика, так и на сервере интеграции с процессорами Jenkins.
Мой текущий подход для полного тестирования моего пакета заключается в следующем:
- Создать среду pBuilder
- Установить зависимости из Debian-controlfile в pBuilder env
- Внутри этой среды pBuilder запустите py.test, также используя virtualenv / tox для тестирования различных версий интерпретатора Python
- собирать результаты тестов из тестовой среды (py.test может генерировать хороший JUnit-подобный тестовый вывод, который Jenkins может легко публиковать)
К сожалению, я не смог найти никаких намеков, как это реализовать - особенно как это сделать 3). Вся документация, которую я смог найти, касалась только сборки пакета, а не выполнения тестов.
Кто-нибудь может дать мне несколько советов, как я могу создать такую тестовую установку? Кроме того, я хочу знать, имеет ли смысл вообще делать то, к чему я стремлюсь. Как другие тестируют интеграцию модулей (Python) с другими пакетами Debian?
2 ответа
Я предполагаю, что вы хотите запустить набор тестов при сборке упаковки.
1) Добавить check
цель - Makefile вашего пакета, который запускает ваш текущий набор тестов, включая всю магию virtualenv/tox; например:
.PHONY: check
check:
./runtests.sh
с runtests.sh
скрипт, запускающий интерпретатор, проверяет и затем запускает py.test
2) Настройте свой debian/rules
на самом деле запустить тесты
2a) Если вы используете CDBS, добавьте следующую строку в начале вашего debian / rules
DEB_MAKE_CHECK_TARGET = check
2b) Если вы используете debhelper, то dh_auto_test
скрипт должен автоматически запускать тесты для вас (при условии, что есть check
цель в вашем Makefile)
2c) Если у вас есть обычай debian/rules
, запустите цель проверки после успешной сборки
Как другие тестируют интеграцию модулей (Python) с другими пакетами Debian?
Одним из вариантов является предоставление полностью новой системы для запуска ваших тестов, то есть на виртуальной машине или дешевом облачном сервере.
Если у вас тупик на pBuilder, вы можете вызвать произвольный скрипт с pbuilder execute
Некоторые другие полезные советы на http://packaging.ubuntu.com/html/chroots.html