自动化测试培训:设计和实现分布式QTP调用
自动化测试培训:设计和实现分布式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 加载指定脚本
第四步:可以进一步设计优化改控制软件
加入多个客户端
自动化测试培训:设计和实现分布式QTP调用的更多相关文章
- QTP自动化测试培训:描述编程之WebElement
QTP自动化测试培训:描述编程之WebElement 通过描述性编程技术,来描述出来输入框: set po=browser("creationtime:=0").page(&q ...
- 手机自动化测试培训:appium目录结构分析
手机自动化测试培训:appium目录结构分析 移动端的自动化测试越来越普遍,poptest率先退出移动端自动化测试的课程,以appuim的python脚本版本作为授课基础,后期陆续退出java版本 ...
- 分布式远程服务调用(RPC)框架
分布式远程服务调用(RPC)框架 finagle:一个支持容错,协议无关的RPC系统 热门度(没变化) 10.0 活跃度(没变化) 10.0 Watchers:581 Star:6174 Fork: ...
- 《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)
1.简介 上一篇宏哥介绍了如何设计支持不同浏览器测试,宏哥的方法就是通过来切换配置文件设置的浏览器名称的值,来确定启动什么浏览器进行脚本测试.宏哥将这个叫做浏览器引擎类.这个类负责获取浏览器类型和启动 ...
- Eclipse+Selenium自动化测试脚本设计V1.0
Eclipse+Selenium自动化测试脚本设计V1.0 http://www.docin.com/p-803032251.html
- 自动化测试 接口自动化及UI自动化测试平台设计演示
接口自动化及UI自动化测试平台设计演示 by:授客 QQ:1033553122 欢迎加入全国软件测试交流qq群:7156436 大家好,我是授客. 本视频意在分享个人,基于Python,Djan ...
- Atitit.分布式远程调用 rpc rmi CORBA的关系
Atitit.分布式远程调用 rpc rmi CORBA的关系 1. 远程调用(包括rpc,rmi,rest)1 2. 分布式调用大体上就分为两类,RPC式的,REST式的1 3. RPC(远程 ...
- Python3简易接口自动化测试框架设计与实现(中)
目录 7.Excel数据读取 7.1.读取配置文件 7.1.编写Excel操作类 8.用例组装 9.用例运行结果校验 10.运行用例 11 .小结 上一篇:Python3简易接口自动化测试框架设计与实 ...
- java使用netty模拟实现一个类dubbo的分布式服务调用框架
本文较长,如果想直接看代码可以查看项目源码地址: https://github.com/hetutu5238/rpc-demo.git 要想实现分布式服务调用框架,我们需要了解分布式服务一般需要的功能 ...
随机推荐
- strpos、 strstr、 substr三个函数的对比讲解
mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) 返回 needle 在 haystack 中首次出现的数字 ...
- 我的JS 中级学习篇
在codefordream上进入中级学习后,感觉立马从js的基础学习往前跳了好远,上面的东西好像都是第一次看到一样.这时候才发现,说来也曾接触过js,但是这时候才发现对js的认识就停在知道两点:js中 ...
- Javascript高级程序设计——Javascript简史+使用Javascript
一.Javascipt简史 1.了解Javascript历史 Netscape(Javascript1.0).Microsoft(JScript)到JS1.1,再到ECMA-262标准 2.知道ECM ...
- B/S架构与C/S架构的区别
C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势. ...
- cocoapods 删除已导入项目的第三方库和移除项目中的cocoapods
第一部分将介绍如何删除项目中已经由cocoapods配置好的第三方 1.打开项目中的Podfile文件 2.删除选中的pod Snapkit的命令行3.打开终端cd到当前项目的根目录下重新执行pod ...
- hdoj 1231 最大连续子列和
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- wemall app商城源码Fragment中监听onKey事件
wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享android开发Fragment中监听onK ...
- 基于 Koa平台Node.js开发的KoaHub.js的控制器,模型,帮助方法自动加载
koahub-loader koahub-loader是基于 Koa平台Node.js开发的KoaHub.js的koahub-loader控制器,模型,帮助方法自动加载 koahub loader I ...
- 3399: [Usaco2009 Mar]Sand Castle城堡
3399: [Usaco2009 Mar]Sand Castle城堡 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 37 Solved: 32[Sub ...
- CDbConnection failed to open the DB connection
打开数据库失败 有我遇到的有寄给问题: 1 Not find Drive 2 SQLSTATE[28000] [1045] Access denied for user 'xxx'@'localhos ...