如何在Python中将Travis CI与CodeClimate测试覆盖率集成?

8
我正在尝试让我的Travis CI将测试覆盖率数据发送到Code Climate服务,但是Code Climate和Travis CI的文档没有详细说明如何使用Python实现此功能。然而,根据Code Climate和Travis文档,其支持此功能。我试图找到任何可行的示例,但没有成功并且无法独自完成。 Code Climate文档: 设置测试覆盖率, 自述文件: codeclimate-test-reporter Travis CI文档: 使用Code Climate和Travis CI 我按照这个答案中所述在Travis CI中设置了CODECLIMATE_REPO_TOKEN: https://stackoverflow.com/a/31281481/1754089 我的.travis.yml文件:
language: python
python:
  - 2.7
install:
  - pip install -r requirements.txt
  - pip install coverage
  - pip install codeclimate-test-reporter
#commands to run tests:
script:
  - python mytests.py
  - coverage run mytests.py
after_success:
  - codeclimate-test-reporter

当Travis执行after_success行时,日志视图会显示以下内容:

/home/travis/build.sh: line 45: codeclimate-test_reporter: command not found

1
根据您的错误信息,您的脚本中有一个拼写错误。请注意 codeclimate-test_reporter 中的下划线。 - Peter Brittain
2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
5

实际上,根据Peter在评论中提到的问题类型,看起来只是您这边的问题。您的after_success应该有codeclimate-test-reporter——看起来您已经有了,但travis报告了其他问题。

现在我为什么要开启悬赏并且其实只是因为我不理解codeclimate_test_reporter的工作原理。我想从py.test中报告我的覆盖率。codeclimate_test_reporter在GitHub上有一个非常好的自述文件如何创建覆盖率报告。然而,从他们的示例中,看起来将codeclimate-test-reporter作为参数提供给--cov会自动发送报告到codeclimate。但事实并非如此。

使用py.test,您需要做的是:

script:
- py.test --cov=YourModuleYouWantToCover test_folder
- codeclimate-test-reporter --file .coverage

魔法发生了,我第一次在codeclimate上获得了覆盖率报告!

我向codeclimate-test-reporter提交了一个拉取请求,更新了他们的自述文件,并已合并,希望未来的人少些困惑!


1
感谢您的时间和努力! - Toni Nurmi

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,