背景
1 自动化测试程序需要远程启动 windows 上的进程,删除日志等操作
选型 telnetlib
2 每个用例集需要在执行前启动系统,执行结束后关闭系统。
遇到的问题
1 telnet 链接如果断开链接远程机器系统进程会消失
需要在用例执行过程中链接保持,在执行结束后,将链接断开
开始的方案
远程机器的重启系统脚本中 kill 掉 进程,然后再启动系统
这样子只需要在第二个链接过去,执行脚本就好。
但遇到了另外一个问题
第一个链接保持过程中,第二个 telnet 链接无法成功链接
解决方案
必须做到一个用例集开始时启动系统,并且保持链接,用例集结束时断开链接
1 考虑使用多线程解决,使用后台线程启动 telnet 链接,等主线程退出时,后台线程也肯定退出了。
2 如果做到各用例集执行结束时,线程退出或者 telnet 链接断开。用例集执行结束时,通过
queue
并当做参数传给 telnetdo。然后 queue.get() 到 tn 对象,等用例集结束则执行 tn.close
示例代码
q=Queue()
t=threading.Thread(target=restartjob,args=(hostname,name,passwd,restart.bat,q))
t.setDaemon(True)
t.start()
#dosomethingTest
q.get().close()
def restartjob(hostname,name,passwd,restart.bat,q):
tn=telnetlib(xxxxxx)
q.put(tn)
xxx 线程阻塞 sleep(9999999)