如何将条件执行pytest的shell代码转换为Groovy脚本
Groovy 条件执行 pytest 命令的实现方案
场景1:普通 Groovy 脚本
Groovy 中执行外部命令可直接调用 execute() 方法,条件逻辑直接使用 Groovy 原生的 if-else 即可,示例代码如下:
// 替换为实际业务判断条件 def runFirstTest = 你的条件表达式 def targetTestFile = runFirstTest ? "test_try.py" : "test_try1.py" // 构造并执行pytest命令 def pytestProcess = ["pytest", targetTestFile].execute() // 等待命令执行完成 pytestProcess.waitFor() // 打印执行日志用于排查问题 println "执行输出:${pytestProcess.inputStream.text}" println "错误日志:${pytestProcess.errorStream.text}" // 校验执行结果 def exitCode = pytestProcess.exitValue() if (exitCode != 0) { throw new Exception("pytest执行失败,退出码:${exitCode}") }
场景2:Jenkins Pipeline 中的 Groovy 语法
如果是在 Jenkins 流水线中使用,直接调用内置的 sh 步骤即可,写法更简洁:
stage('运行pytest测试') { steps { script { // 替换为实际判断条件 if (你的条件表达式) { sh 'pytest test_try.py' } else { sh 'pytest test_try1.py' } // 也可以简化为一行写法 // sh "pytest ${你的条件表达式 ? 'test_try.py' : 'test_try1.py'}" } } }
注意事项
- 执行前请确认 pytest 已加入当前环境的 PATH 变量,也可以直接写 pytest 的绝对路径避免找不到命令的问题,例如
/usr/bin/pytest - 需要添加 pytest 运行参数时直接追加在命令列表中即可,例如要开启详细输出+生成html报告可以写成:
["pytest", targetTestFile, "-v", "--html=report.html"] - Windows 环境下运行需要通过 cmd 调用命令,示例:
["cmd", "/c", "pytest", targetTestFile].execute()
内容的提问来源于stack exchange,提问作者Yash Sanghavi
相关产品推荐
相关产品推荐

