我在Windows中使用python3.0,并尝试自动化命令行应用程序的测试。用户可以在测试中的应用程序中键入命令,并以2个XML包的形式返回输出。一个是包,另一个是包。通过分析这些数据包,我可以验证结果。我认为代码如下
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()读取输出的地方卡住了。我试过read(),但它也卡住了
当我手动运行命令行应用程序并键入命令时,我会将输出正确地作为两个xml包返回,如下所示
^{pr2}$但是当我使用下面的communicate()时,我得到的是发送的数据包,而从来没有得到Recv:packet。为什么我错过了录像包?通信(0应该从stdout获取所有信息。rt?在
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下不工作
尝试使用
communicate
而不是write
发送输入:您是否考虑过使用pexpect而不是子流程?它处理可能会阻止代码工作的细节(如刷新缓冲区等)。它可能还不适用于Py3k,但它在2.x中运行良好
参见:http://pexpect.sourceforge.net/pexpect.html
这是一个常见问题,例如,请参见:
(实际上,您应该在创建问题时看到这些…?!)。在
我有两件事感兴趣:
公布你的结果。在
相关问题 更多 >
编程相关推荐