我正在尝试使用Jenkins运行python测试并创建覆盖率报告。
我已经编译了与python绑定的应用程序-称其为pythonX-为执行该应用程序的各个部分设置了环境。现在,当我想对部分代码运行测试时,我可以运行
d:\my_app\sys\pythonX.exe -m pytest d:\user\repos\my_app\tests\unit
所有工作都非常好,因为pythonX
知道一切在哪里。
为此,我正在使用
stage('Run tests') {
steps {
bat 'd:\\my_app\\sys\\pythonX.exe -m pytest d:\\user\\repos\\my_app\\tests\\unit'
}
}
。
但是有一个问题,这个pythonX
在应用程序附带的代码上运行测试,因此已经构建好了。我不希望对仍然本地的代码运行测试。
pythonX
添加了一个环境变量PYTHONPATH
,用于指定源代码的位置,但是每当我通过pythonX.exe
启动bat
时,它都会改变我之前添加的内容。
我首先尝试的是像这样使用withEnv
stage('Run tests') {
steps {
withEnv(['PATH+PYTHONPATH=d:\\user\\repos\\my_app']){
bat 'd:\\my_app\\sys\\pythonX.exe -m pytest d:\\user\\repos\\my_app\\tests\\unit'
}
}
}
但这没有帮助。
我尝试的其他方法是设置环境,然后更改PYTHONPATH
变量,然后在现有环境中通过pythonX
运行测试。
这是代码
stage('Run tests') {
steps {
bat '''
d:\\my_app\\sys\\pythonX.exe --debug=cmd
set PYTHONPATH= d:\\user\\repos\\my_app;%PYTHONPATH%
d:\\my_app\\sys\\pythonX.exe -m pytest d:\\user\\repos\\my_app\\tests\\unit
'''
}
}
但这不起作用。我想这是用它自己的PYTHONPATH
环境变量覆盖的。
有谁知道该如何克服?