【问题标题】:Run Python integration tests inside pBuilder environment在 pBuilder 环境中运行 Python 集成测试
【发布时间】:2012-04-20 10:39:23
【问题描述】:

我已经从一个 Python 项目中构建了一个 Debian 包,该项目依赖于一堆 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-like test output Jenkins 可以轻松发布)

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

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

【问题讨论】:

    标签: python debian integration-testing virtualenv pbuilder


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      如果您对 pBuilder 不满意,您可以使用 pbuilder execute 调用任意脚本

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-09
        • 2022-11-10
        • 2012-01-19
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 2011-06-29
        相关资源
        最近更新 更多