Запустите интеграционные тесты Python в среде pBuilder

Я собрал пакет Debian из проекта Python, который зависит от работы нескольких пакетов Debian. Проект Python также содержит модульные и интеграционные тесты (с использованием py.test).

Поскольку мой проект зависит от некоторых пакетов Debian, мне нужно установить эти пакеты в тестовой среде, и они должны убедиться, что мой модуль работает правильно вместе с этими пакетами (я хочу убедиться, что мой модуль не ломается при обновлениях этих библиотек).

Я хочу поместить конфигурацию и выполнение этих тестовых сред в Makefile. Эти тесты должны выполняться как на рабочей станции разработчика, так и на сервере интеграции с процессорами Jenkins.

Мой текущий подход для полного тестирования моего пакета заключается в следующем:

  1. Создать среду pBuilder
  2. Установить зависимости из Debian-controlfile в pBuilder env
  3. Внутри этой среды pBuilder запустите py.test, также используя virtualenv / tox для тестирования различных версий интерпретатора Python
  4. собирать результаты тестов из тестовой среды (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

Другие вопросы по тегам