【问题标题】:How does Jenkins code coverage work?Jenkins 代码覆盖率如何工作?
【发布时间】:2014-10-02 10:32:49
【问题描述】:

我正在使用 Jenkins 来构建和监控我的应用程序的测试。

我有这么一段python代码:

def register_os_handler():
    def handler(signal, frm):
        raise SystemExit()
    signal(SIGHUP, handler)

在我的测试中,我创建了一个子进程,并向它发送了一个 SIGHUP 信号,它按预期退出,这意味着它到达了raise SystemExit() 的行。

当我将它提交给 Jenkins 时,所有测试都通过了,但它说 raise SystemExit() 行没有被覆盖。

我很好奇为什么确实达到了那条线,但詹金斯仍然抱怨?

  1. Jenkins 的覆盖率报告如何工作?

  2. 如果一个进程(即使是子进程)退出了,它不能检测到该行或考虑到该行?

  3. 如何解决这个问题?

【问题讨论】:

    标签: python jenkins


    【解决方案1】:

    我相信 Jenkins 使用的是 coverage.py。如果你想计算子进程的覆盖率,你需要一点技巧,这里描述:

    http://nedbatchelder.com/code/coverage/subprocess.html

    【讨论】:

    • 感谢您的链接。我是 python / Jenkins 新手。那么我可以在 Jenkins 中配置我的项目,让它按照链接所说的那样工作吗?
    • 我不太了解 Jenkins,但我明白了,您可以在 Jenkins 作业中添加任意 shell 代码。所以最简单的想法是使用echo 命令来创建sitecustomize.py 模块。
    猜你喜欢
    • 2016-05-29
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    相关资源
    最近更新 更多