【问题标题】:Code coverage in gitlab CI/CDgitlab CI/CD 中的代码覆盖率
【发布时间】:2018-06-15 21:52:56
【问题描述】:

我使用Docker-dind 构建和测试我的python 代码。我很困惑如何在以下两个选项之间运行 gitlab-ci 的覆盖范围。

1) Gitlab 自己有覆盖 [here]

2) 我关注 python 的覆盖范围 tutorial 并使用以下内容创建自己的覆盖范围:

 coverage:
  stage: test
  script:
      - docker pull $CONTAINER_TEST_IMAGE
      - docker run $CONTAINER_TEST_IMAGE python -m coverage run tests/tests.py
      - docker run $CONTAINER_TEST_IMAGE python -m coverage report -m

当gitlab抛出异常No data to report.:

我猜coverage report 命令无法访问/找到容器中的.coverage 文件。


所以我的问题是在这种情况下运行coverage 的优雅方式是什么?

【问题讨论】:

  • 我认为 gitlab 没有代码覆盖率。相反,它允许您从作业输出中提取代码覆盖率。
  • @emory 请给我一个例子。

标签: docker continuous-integration gitlab code-coverage gitlab-ci


【解决方案1】:

由于const's answer 已经使第一部分变得更容易,即获取覆盖细节,我已经尝试解决how to get reports?

这是由Gitlab coverage doc 提供的。 所以你的coverage工作必须这样写

 coverage:
  stage: test
  script:
      - docker pull $CONTAINER_TEST_IMAGE
      - docker run $CONTAINER_TEST_IMAGE /bin/bash -c "python -m coverage run tests/tests.py && python -m coverage report -m"
  coverage: '/TOTAL.+ ([0-9]{1,3}%)/'

mondwan blog 中提到了正则表达式

插件

如果您在 README.md 文件中添加以下行,您将获得一个很好的徽章(在主 README.md 中),它会捕获您的覆盖范围详细信息。

[![coverage report](https://gitlaburl.com/group_name/project_name/badges/master/coverage.svg?job=unittest)](https://gitlaburl.com/group_name/project_name/commits/master)

【讨论】:

    【解决方案2】:

    我猜覆盖率报告命令无法访问/找到容器中的 .coverage 文件。

    是的,你的假设是正确的。通过运行:

    - docker run $CONTAINER_TEST_IMAGE python -m coverage run tests/tests.py
    - docker run $CONTAINER_TEST_IMAGE python -m coverage report -m
    

    实际上你一个接一个地启动了两个完全独立的容器。

    为了提取覆盖率报告,您必须在 coverage run 命令在同一个容器中完成后运行 coverage report 命令,如下所示(我假设这里是 bash shell):

    -  docker run $CONTAINER_TEST_IMAGE /bin/bash -c "python -m coverage run tests/tests.py && python -m coverage report -m" 
    

    【讨论】:

    • 感谢您的回答,虽然它解决了我面临的另一个问题并且 gitlab 没有报告覆盖率。我还添加了测试覆盖解析
    • 那么,您能否详细说明您面临的另一个问题的详细信息,并举一些简单的例子?您是否使用工件来保持覆盖范围或有其他方法?
    • 这对@Const 很有帮助。非常感谢。一个奇怪的问题,任何知道的人都可以回答我,上面脚本中的“-c”和“-m”选项是什么意思?
    猜你喜欢
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 2013-02-08
    • 2022-06-11
    • 1970-01-01
    • 2022-01-18
    • 2021-11-21
    相关资源
    最近更新 更多