如何在Jenkins环境中运行不同的tox命令?

2024-03-29 00:06:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用不同的命令行参数py.测试,取决于环境:在本地运行应该只有默认的,但是在Jenkins上我想添加--junitxml=junit-{envname}.xml,这样测试结果可以以很好的格式发布。 我从documentation知道,有一个特殊的[tox:jenkins]部分,如果有'JENKINS_URL''HUDSON_URL',这个should be used。所以现在我创造了简单毒性试验文件:

[tox]
envlist = py27, py35

[tox:jenkins]
commands = echo "We are in JENKINS!"

[testenv]
setenv =
    PYTHONPATH = {toxinidir}:{toxinidir}/my_module
commands = python setup.py test

deps =
    -r{toxinidir}/requirements.txt
    -r{toxinidir}/requirements_test.txt

并定义了JENKINS_URL环境变量:

^{pr2}$

我希望,如果我运行tox,那么我的原始命令将被echo替换,但它不起作用,而是以执行原始命令结束。 有人能帮我解决这个问题吗?在


Tags: 命令行pytest命令echotxttoxurl
2条回答

好吧,我自己找到了解决办法:

[tox]
envlist = py27, py35

[testenv]
setenv =
    PYTHONPATH = {toxinidir}:{toxinidir}/my_module
commands = py.test {env:CUSTOM_ARGS} ; <== use environment variable here

deps =
    -r{toxinidir}/requirements.txt
    -r{toxinidir}/requirements_test.txt

在Jenkins中,只需定义CUSTOM_ARGS环境变量如下:

^{pr2}$

您可以使用positional arguments。在

像这样:

commands = py.test  mandatory-flag {posargs: default-flag}

在詹金斯,你可以这样称呼毒物:

^{pr2}$

注意用两个破折号分隔。在

相关问题 更多 >