2

我已经从一个依赖于一堆 Debian 包工作的 Python 项目构建了一个 Debian 包。Python 项目还包含单元和集成测试(使用py.test)。

由于我的项目依赖于一些 Debian 包,我需要在测试环境中安装这些包,并且他们应该验证我的模块与这些包一起正常工作(我想确保我的模块不会因更新这些库而中断)。

我想把这些测试环境的配置和执行放到一个Makefile中。这些测试应该可以在开发人员工作站和 Jenkins 支持的集成服务器上运行。

我目前对我的包进行完整集成测试的方法是:

  1. 创建 pBuilder 环境
  2. 将 Debian-controlfile 中的依赖项安装到 pBuilder env 中
  3. 在这个 pBuilder-environment 里面启动 py.test,同样使用virtualenv / tox来测试不同的 Python 解释器版本
  4. 从测试环境收集测试结果(py.test 可以生成类似 JUnit 的测试输出,Jenkins 可以轻松发布)

不幸的是,我找不到任何提示如何实现这些东西——尤其是如何做 3)。我能找到的所有文档都只是关于构建包,而不是关于运行测试。

谁能给我一些提示我如何建立这样的测试设置?另外,我想知道做我想做的事情是否有意义。其他人如何测试(Python)模块与其他 Debian 软件包的集成?

4

2 回答 2

5

我假设您想在构建包装时运行测试套件。

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脚本应该自动为你运行测试(假设你的 Makefile 中一个目标)check

2c)如果您有自定义debian/rules,请在成功构建后运行“检查”目标

于 2012-04-24T07:54:03.573 回答
1

其他人如何测试(Python)模块与其他 Debian 软件包的集成?

一种选择是提供一个全新的系统来运行您的测试,即在虚拟机或廉价的云服务器上。

如果您对 pBuilder 死心,您可以调用任意脚本pbuilder execute

http://packaging.ubuntu.com/html/chroots.html上的一些其他有用提示

于 2012-04-29T23:34:52.783 回答