2016-04-11 6 views
0

私はtestrunner.batと呼ばれるbatスクリプトを呼び出しているPythonスクリプトを持っています。このスクリプトはSOAPUIでTestSuiteを実行します。PythonでPopenを使用して変数を使用してbatスクリプトを実行する

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") 

は、しかし、私は動的にするソフトウェア「レベル」を持ってできるようにする必要があり、コマンドに可変レベルを渡す必要があります:私は実際には次のコマンドでうまく動作するように外部コールを得ています「夜間」の代わりに夜間のソフトウェアか安定しているかどうかを指定することができます。私は別々の議論をすべて破るべきだと思っていますが、苦労しています。

答えて

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は粉々にあなたの元のコマンド文字列を分割するために非常に役立ちます。しかし、少なくとも私の場合は、二重引用符を再追加する必要がありました。

また、一重引用符で囲まれた文字列は二重引用符を含むことができ、逆も同様であるため、ここで引用符をエスケープする必要はありません。

+0

パスにバックスラッシュをいくつか追加しなければなりませんでしたが、これは素晴らしいものです。あなたの助けをありがとう! – ssbsts

関連する問題