我想为py.test使用不同的命令行参数,具体取决于环境:在本地运行应该只有默认值,但在Jenkins上我想添加--junitxml=junit-{envname}.xml
,所以测试结果可能是以漂亮的格式发布。
我从documentation了解到,有[tox:jenkins]
部分,should be used部分,如果已定义'JENKINS_URL'
或'HUDSON_URL'
。所以现在我创建了简单的tox.ini文件:
[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
环境变量:
export JENKINS_URL=true
我希望,如果我运行tox,那么我的原始命令将被echo
替换,但是它不起作用,而是以最初的命令执行结束。
有人可以帮我解决这个问题吗?
答案 0 :(得分: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
环境变量,如下所示:
export CUSTOM_ARGS="--junitxml=junit.xml"
答案 1 :(得分:0)
您可以使用positional arguments。
像这样:
commands = py.test --mandatory-flag {posargs:--default-flag}
在詹金斯你可以这样打电话给托克斯:
tox -- --override-flag
请注意两个短划线--
的分隔。