我有一个python脚本正在调用名为testrunner.bat
的bat脚本,该脚本又在SOAPUI中执行TestSuite。我实际上通过以下命令使外部调用正常工作:
Popen("testrunner.bat -s\"CCT000 - Deploy Software Release\" -R\"TestSuite Report\" -E\"Default environment\" -Ppath.packages.sq=Y:\\NIGHTLY C:\\CI\\HEDeployment\\CI-XXX-DeploySwRelease")
但是,我需要能够使用该软件" level"是动态的,需要将变量级别传递给命令来代替" NIGHTLY"所以我可以指定它是夜间软件,还是稳定等等。我已经看到我应该单独打破所有论点,但是我很难过。
答案 0 :(得分:2)
subprocess.Popen()
可以获取参数列表以及字符串。所以,这应该适合你:
release_type = "NIGHTLY"
Popen(['testrunner.bat',
'-s"CCT000 - Deploy Software Release"',
'-R"TestSuite Report"',
'-E"Default environment"',
'-Ppath.packages.sq=Y:' + release_type,
'C:CIHEDeploymentCI-XXX-DeploySwRelease'])
正如文档中所提到的,shlex.split
对于将原始命令字符串拆分成碎片非常有用。但是,至少在我的情况下,我不得不重新添加双引号。
另外,请记住单引号字符串可以包含双引号,反之亦然,因此您无需在此处转义引号。