我对Python很新,我正在尝试编写一个脚本来自动化测试。
工作原理: 程序A:通过串口发送命令等待响应,然后执行下一个命令 程序B:使用Subprocess模块的TCP_Client.exe应用程序将参数(ip,端口,数据包数量,大小)与应用程序一起发送到命令提示符并读取输出。
它应该做什么:
RunSer2Command(lines2[21])
time.sleep(1)
ls_output = subprocess.Popen(['tcpclient.exe','192.168.22.33','5000','100000','1400'],stdout=subprocess.PIPE)
time.sleep(1)
RunSer2Command(lines2[22])
RunSer2Command(lines2[23])
time.sleep(1)
ls_output = subprocess.Popen(['3'],stdout = subprocess.PIPE)
ls_output.communicate()
RunSer2Command(lines2[24])
ser2.close()
像这样的东西
有人能告诉我是否应该阅读多线程或者这个太小而不能要求吗? 如果是这样我应该寻找什么?
提前致谢
答案 0 :(得分:0)
回答我自己的问题。 简短的回答是Threading会做到这一点。这也是不必要的。子进程模块足以让我工作。我只是没有做对
RunSer2Command(lines2[21])
time.sleep(1)
ls_output = subprocess.Popen(['tcpclient.exe','192.168.4.110','8000','10000','1400'],stdin=subprocess.PIPE,stdout=subprocess.PIPE,bufsize=3)
time.sleep(2)
RunSer2Command(lines2[22])
RunSer2Command(lines2[23])
time.sleep(1)
ls_output.communicate(input = '3')
ls_output.wait()
RunSer2Command(lines2[24])
对于那些关心穿线路线的人来说,确实让我到了某一点,我会补充一点但是我从未做过最后一次的情况......我找到了更容易的路线
def start_tcp_client(cond):
ls_output = subprocess.Popen(['tcpclient.exe','192.168.4.110','8000','1000','1400'],stdin=subprocess.PIPE,stdout=subprocess.PIPE,bufsize=3)
with cond:
cond.wait()
ls_output.communicate(input = '3')
ls_output.communicate()
def TCPSettings(cond):
with cond:
RunSer2Command(lines2[22])
RunSer2Command(lines2[23])
cond.notify()
condition = threading.Condition()
condition1 = threading.Condition()
Client_thread=threading.Thread(name='Client_thread', target=start_tcp_client, args=(condition,))
TCP_thread=threading.Thread(name='TCP_thread', target=TCPSettings, args=(condition,))
RunSer2Command(lines2[21])
time.sleep(2)
Client_thread.start()
time.sleep(2)
TCP_thread.start()
time.sleep(1)
Client_thread.join()
time.sleep(10)
RunSer2Command(lines2[24])
我还没有设法弄清楚所有的问题。似乎存在一些时间问题。一旦我完美地工作,我就会更新它。