【问题标题】:Show Coverage in github PR在 github PR 中显示覆盖率
【发布时间】:2021-08-01 14:13:48
【问题描述】:

我们在 github 中对每个拉取请求运行测试。

如果您正在查看拉取请求的更改,如果覆盖范围是可见的,那将非常酷。

在查看 PR 审查中的差异时,我想看看哪一行被覆盖,哪一行没有。

我们使用 pytest 和 travis。

我发现了这个:https://github.com/TheKevJames/coveralls-python 但是 AFAIK 这会在其他地方显示覆盖率报告,而不是在 PR 的“文件已更改”选项卡中。

这个问题不是要达到 X% 的总体覆盖率。这个问题是关于查看哪些行被覆盖,哪些行没有被覆盖。

【问题讨论】:

  • 那么问题是什么?您希望代码在拉取请求中显示在 Github 中的覆盖范围?
  • @JulianSilvestri 如果您正在查看拉取请求的更改,如果覆盖范围可见,那将非常酷。
  • 你试过python包'coverage'吗?
  • 也许这会有所帮助? about.codecov.io/blog/…
  • 看看coverage-diffdiff-cover。但是,IMO 最简单的方法是拥有 100% 的代码覆盖率,如果低于,则使测试失败,例如在 CI 中运行 pytest --cov-fail-under=100(使用 pytest-cov 插件)。

标签: python github pytest travis-ci


【解决方案1】:

您可以使用 Github Actions 和 Github Check 运行 API 实现此目的。

Github Action 工作流的一般流程是:

  1. 对更改的文件运行pytest,然后生成coverage 报告。
  2. 使用coverage 报告注释提交。

生成的报告如下所示:

我创建了一个存储库:pytest-annotate-pr 来演示如何做到这一点。请注意,这只是演示如何做到这一点,而且还远未准备好生产。例如,目前这仅在 PR 中推送提交时有效 :) 当分支合并到 main 时它不起作用。上面的截图来自one of the PR 针对main 提出的。

如果您致力于此工作并制作可用于生产的工作流程,请考虑将其纳入 Github Action。

【讨论】:

    【解决方案2】:

    部分解决方案:在我参与的一个项目中,我们设置了codecov action。此操作has a feature 用于注释“文件已更改”选项卡中未涵盖的行:

    这只会告诉你哪些行没有被覆盖,但也许总比没有好?

    编辑:我刚才注意到 Julian 已经在 cmets 中建议了 codecov,并且您说您想要一些非商业的东西。我只能在那里补充一点,codecov 对于公共回购以及最多五名成员的团队是免费的。如果你有一个私人仓库和一个更大的团队并且不想为这项服务付费,这对你没有帮助。

    我认为我仍然应该在此处保留答案,以防有人在为开源项目寻找解决方案时发现此问题。

    【讨论】:

    • 谢谢。这个答案总比没有好。也许我应该切换到 gitlab,因为我通常更喜欢“自己做”而不是“购买”。
    【解决方案3】:

    您可以将代码覆盖率输出到 README 文件中,这样您在“文件已更改”选项卡中以及访问项目页面时都会看到代码覆盖率。

    【讨论】:

    • 我更新了问题以使其更清楚:我想看看哪些行被覆盖,哪些行没有。
    • 我不认为你可以这样做,这是覆盖率报告的目的,但你在推送代码之前离线这样做。
    猜你喜欢
    • 2012-08-19
    • 2019-06-29
    • 2017-02-18
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 2022-06-19
    • 2017-05-31
    • 1970-01-01
    相关资源
    最近更新 更多