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

时间:2012-04-20 10:39:23

标签: python debian integration-testing virtualenv pbuilder

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

由于我的项目依赖于一些Debian软件包,我需要在测试环境中安装这些软件包,他们应该验证我的模块是否与这些软件包一起正常工作(我想确保我的模块不会在更新时中断这些图书馆)。

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

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

  1. 创建pBuilder环境
  2. 从Debian-controlfile安装依赖项到pBuilder env
  3. 在这个pBuilder环境中启动py.test,同时使用virtualenv / tox来测试不同的Python解释器版本
  4. 从测试环境中收集测试结果(py.test可以生成很好的JUnit-like test output,Jenkins可以轻松发布)
  5. 不幸的是我找不到任何提示如何实现这些东西 - 特别是如何做3)。我能找到的所有文档都只是构建包,而不是运行测试。

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

2 个答案:

答案 0 :(得分:5)

我认为您希望在构建包装时运行测试套件。

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

.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,请在成功构建后运行“检查”目标

答案 1 :(得分:1)

  

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

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

如果您在pBuilder上死机,可以使用pbuilder execute

调用任意脚本

http://packaging.ubuntu.com/html/chroots.html

上的其他一些有用提示
相关问题