gpt4 book ai didi

python - tox 中的条件命令? (tox、travis-ci 和工作服)

转载 作者:IT老高 更新时间:2023-10-28 21:03:01 30 4
gpt4 key购买 nike

tl;博士:

我正在为我的一个项目设置 CI,托管在 github 上,使用 toxtravis-ci。在构建结束时,我运行 converalls 将覆盖率报告推送到 coveralls.io。我想让这个命令“有条件”——仅在 travis 上运行测试时执行;不是当它们在我的本地机器上运行时。有没有办法做到这一点?

详情:

我要测试的包是一个 python 包。我正在使用/计划使用以下“基础设施”来设置测试:

  • 测试本身属于 py.test 种类。
  • 可以说,CI 脚本来自 tox。这让我可以在本地运行测试,这对我来说相当重要。我不想每次需要测试运行时都推送到 github。我还在我的包中使用了 numpymatplotlib,所以在 travis-ci 上运行大量的测试周期对我来说似乎过于浪费了。因此,放弃 tox 并仅使用 .travis.yml 不是一种选择。
  • CI 服务器是 travis-ci

相关的测试脚本如下所示:

.travis.yml

language: python
python: 2.7
env:
- TOX_ENV=py27
install:
- pip install tox
script:
- tox -e $TOX_ENV

tox.ini

[tox]
envlist = py27

[testenv]
passenv = TRAVIS TRAVIS_JOB_ID TRAVIS_BRANCH
deps =
pytest
coverage
pytest-cov
coveralls
commands =
py.test --cov={envsitepackagesdir}/mypackage --cov-report=term --basetemp={envtmpdir}
coveralls

这个文件让我可以在本地运行测试。但是,由于最后的 coveralls 调用,原则上测试失败,出现:

py27 runtests: commands[1] | coveralls
You have to provide either repo_token in .coveralls.yml, or launch via Travis
ERROR: InvocationError: ...coveralls'

这是一个预期错误。 passenv 位从 travis 发送必要的信息,以便能够写入 coveralls,并且无需 travis 在那里提供此信息,命令应该失败。我也不希望这将结果推送到 coveralls.io。我希望只有在 travis-ci 上进行测试时才运行 coveralls。有什么方法可以让这个命令有条件地运行,或者设置一个构建配置来达到同样的效果?

我已经尝试将工作服部分移动到 .travis.yml 中,但是当执行此操作时,coveralls 似乎无法找到合适的 。覆盖 文件发送过来。我朝这个方向做了各种尝试,除了上面列出的组合之外,没有一个成功提交到 coveralls.io。以下是我希望的工作,因为当我在本地运行 tox 时,我最终会得到一个我期望的 .coverage 文件 - 在我的源代码树的根文件夹。

没有提交到 coveralls.io

language: python
python: 2.7
env:
- TOX_ENV=py27
install:
- pip install tox
- pip install python-coveralls
script:
- tox -e $TOX_ENV
after_success:
- coveralls

最佳答案

另一种解决方案是在 coveralls 命令前面加上一个破折号 (-),以告诉 tox 忽略其退出代码,如解释in the documentation .这样即使 coveralls 的失败也会被忽略,而 tox 在本地执行时会认为测试执行成功。

使用上面的示例配置,它将如下:

[tox]
envlist = py27

[testenv]
passenv = TRAVIS TRAVIS_JOB_ID TRAVIS_BRANCH
deps =
pytest
coverage
pytest-cov
coveralls
commands =
py.test --cov={envsitepackagesdir}/mypackage --cov-report=term --basetemp={envtmpdir}
- coveralls

关于python - tox 中的条件命令? (tox、travis-ci 和工作服),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32757765/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com