在pBuilder环境中运行Python集成测试

Ing*_*her 2 python debian integration-testing virtualenv pbuilder

我用Python项目构建了一个Debian软件包,它取决于一堆Debian软件包.Python项目还包含单元和集成测试(使用py.test).

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

我想将这些测试环境的配置和执行放入Makefile中.这些测试应该可以在开发人员工作站和Jenkins支持的Integration Server上运行.

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

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

不幸的是我找不到任何提示如何实现这些东西 - 特别是如何做3).我能找到的所有文档都只是构建包,而不是运行测试.

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

uml*_*ute 5

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

1)将一个check目标添加到你的包的Makefile中,它运行你的实际测试套件,包括所有virtualenv/tox魔法; 例如:

.PHONY: check
check:
    ./runtests.sh
Run Code Online (Sandbox Code Playgroud)

使用runtests.sh运行解释器的脚本检查然后启动py.test

2)配置你debian/rules实际运行测试

2a)如果您使用CDBS,请在debian/rules的开头添加以下行

DEB_MAKE_CHECK_TARGET = check
Run Code Online (Sandbox Code Playgroud)

2b)如果你使用debhelper,那么dh_auto_test脚本应该自动为你运行测试(前提check你的Makefile中有一个目标)

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