WindowsでPython 3.0を使用していて、コマンドラインアプリケーションのテストを自動化しようとしています。ユーザーはTest Under Applicationにコマンドを入力することができ、2つのXMLパケットとして出力を返します。 1つはパケットで、もう1つはパケットです。これらのパケットを分析することによって、彼は結果を確認することができます。私はコードを以下のように解釈しますPython:サブプロセスモジュールを使用して別のコマンドラインアプリケーションを読み書きできません
p = subprocess.Popen(SomeCmdAppl, stdout=subprocess.PIPE,
shell = True, stdin=subprocess.PIPE, stderr=subprocess.STDOUT)
p.stdin.write((command + '\r\n').encode())
time.sleep(2.5)
testresult = p.stdout.readline()
testresult = testresult.decode()
print(testresult)
私は出力を戻すことができません。私はreadline()を使って出力を読み込もうとしています。私は読んでみました()と私は手動でコマンドラインアプリケーションを実行すると、私は
Sent: <PivotNetMessage>
<MessageId>16f8addf-d366-4031-b3d3-5593efb9f7dd</MessageId>
<ConversationId>373323be-31dd-4858-a7f9-37d97e36eb36</ConversationId>
<SageId>4e1e7c04-4cea-49b2-8af1-64d0f348e621</SagaId>
<SourcePath>C:\Python30\PyNTEST</SourcePath>
<Command>echo</Command>
<Content>Hello</Content>
<Time>7/4/2009 11:16:41 PM</Time>
<ErrorCode>0</ErrorCode>
<ErrorInfo></ErrorInfo>
</PivotNetMessagSent>
Recv: <PivotNetMessage>
<MessageId>16f8addf-d366-4031-b3d3-5593efb9f7dd</MessageId>
<ConversationId>373323be-31dd-4858-a7f9-37d97e36eb36</ConversationId>
<SageId>4e1e7c04-4cea-49b2-8af1-64d0f348e621</SagaId>
<SourcePath>C:\PivotNet\Endpoints\Pipeline\Pipeline_2.0.0.202</SourcePath>
<Command>echo</Command>
<Content>Hello</Content>
<Time>7/4/2009 11:16:41 PM</Time>
<ErrorCode>0</ErrorCode>
<ErrorInfo></ErrorInfo>
</PivotNetMessage>
以下のように牽引XMLパケットとして戻って正しく出力を得る。しかし、私が使用した場合の通信コマンドを入力すると、それはあまりにも
を立ち往生()以下のように私は送信パケットを取得し、決してRecv:パケットを取得しません。なぜ私はrecvパケットを紛失していますか? (通信0は標準出力からすべてを持って来ることになっている。室温?p = subprocess.Popen(SomeCmdAppl, stdout=subprocess.PIPE,
shell = True, stdin=subprocess.PIPE, stderr=subprocess.STDOUT)
p.stdin.write((command + '\r\n').encode())
time.sleep(2.5)
result = p.communicate()[0]
print(result)
誰でも動作するはずのサンプルコードで私を助けることができますか?読んで、別々のスレッドに書き込むために必要とされている場合、私は知りません。 。私を助けてください、私は繰り返し、読み出し/書き込みを行う必要があり、私が使用することができますPythonで任意の高度なレベルのモジュールがあり、私はPexpectモジュールは、Windowsで動作しないと思います
私は戻って出力を送信して読む必要が入力コマンドの多くを持っています。コミュニケーションが可能ですか? –
ああ、今問題が発生します。いいえ、ちがいます。あなたの質問には、知っておくことが重要であることを明記するべきです。私はこの答えを削除します。 – balpha
あなたの答えを削除しないでください...それは助けました..しかし、comminucate()にもパケットがありません。それはちょうどパケットを得ます。私は何が欠けている –