新手区 巧借线程返回值解决 telnetlib 链接关闭问题

lion · 发布于 2017年09月14日 · 最后由 lion 回复于 2017年09月14日 · 224 次阅读

背景
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)


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 3 条回复
297

先用手机记下来,明天修订

—— 来自TesterHome官方 安卓客户端

110

很少用 telnet ,你们用来干嘛的

297
110Lihuazhang 回复

用来操作 window机器,远程启动程度,删除日志等一些操作。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册