自动化测试培训:设计和实现分布式QTP调用
自动化测试的过程中一个很核心的需求就是执行效率,单位时间里要执行更多的测试用例。为了完成该要求,我们开发一个调度工具,让qtp运行在不同的机器上,通过Controller(开发的中央控制软件)来控制各个机器的终端,Controller发送指令,让终端启动qtp,然后执行脚本。 因为poptest上课用的是python作为主要的测试开发语言来学习,所以案例采用python来实现,下面首先是实现cs架构控制软件,客户端发送指令,服务器执行qtp的思路代码,你也可以通过其他编程语言来实现如c#,java等。
第一步先实现服务器端和客户端代码
服务器段代码:
from socket import *
from time import ctime
HOST = '' #空字符表示不绑定如何ip,如何ip都可以与此服务器连接
PORT = 21533 #端口是随机的,但是不能用与计算机其他程序端口重复,建议1024-65535。还有值得注意,如果此脚本运行2次,则会出现错误,第二次需 #要改动代码,因为关闭此脚本时,没有关闭端口,第二次运行时,21533已经存在。要么命令行去关闭端口,要么重启,要么改程序。
BUFSIZ = 1024 #缓存大小,我只发字符,这里设置为1k足以。发送大东西,需要用循环。
ADDR = (HOST,PORT) #绑定
tcpSerSock = socket(AF_INET,SOCK_STREAM) # SOCK_STREAM指的是tcp
tcpSerSock.bind(ADDR) #绑定
tcpSerSock.listen(5) #监听
while True: #死循环
print 'waiting for connection...' #打印
tcpCliSock, addr = tcpSerSock.accept() #接受消息,当有消息接收后,才会再向下执行
print '...connected from:', addr #接受到消息后,打印消息
while True: #又一个死循环。除非接收到消息为空,才会跳出次循环
data = tcpCliSock.recv(BUFSIZ) #设置数据大小
if not data: #如上上所述,数据为空,则结束此层循环
break
tcpCliSock.send('[%s] %s'%(ctime(), data)) #发送消息到客户端,消息为“服务器时间”+“客户端接收到的消息”
tcpCliSock.close() #最后2行代码永远不会被执行,因为前面是死循环,这也造成了,我之前说的,第二次执行代码是会出错。
tcpSerSock.close()
客户端代码
from socket import *
HOST = 'localhost' #设置自己主机
PORT = 21533 #端口必须和服务器设置的一致
BUFSIZ = 1024 <span style="white-space:pre"> </span>
ADDR = (HOST, PORT)
tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR) #连接,而不是监听
while True: #死循环
data = raw_input('> ') #等待用户输入
if not data: #如果为空,则,跳出死循环,执行tcpCliSock.close()
break
tcpCliSock.send(data) #如果不空,则发送
data = tcpCliSock.recv(BUFSIZ #接受服务器数据,并且处理,其处理过程是在此date之前加入时间
if not data: #接受数据为空,则,退出
break
print data #打印数据
tcpCliSock.close()
第二步 实现python调用qtp代码
import win32com.client
o = win32com.client.Dispatch("QuickTest.Application")
o.Launch()
o.Open("C:\Documents and Settings\DChung\Desktop\XMLRequest")
o.Visible = True
o.Test.Run(o.Test)
---
第三步 在服务器端加入python处理qtp代码
在服务器端加入代码,处理客户端的指令,如我们在客户端设计指令为“ start 脚本名称”
data = tcpCliSock.recv(BUFSIZ) #设置数据大小
if not data: #如上上所述,数据为空,则结束此层循环
break
elseif data=“ start 脚本名称”:
解析字符串,如果是start 启动qtp 加载指定脚本
第四步:可以进一步设计优化改控制软件
加入多个客户端