自动化测试培训:设计和实现分布式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 要想实现分布式服务调用框架,我们需要了解分布式服务一般需要的功能 ...
随机推荐
- d3.js 绘制极坐标图(polar plot)
0.引言 在极坐标系中,任意位置可由一个夹角和一段相对原点(极点)的距离表示.也就是说,我们可以用 (angle,r) 来表示极坐标系中的点. 1.数据 假设我们有如下数据集[ [10, 0.2], ...
- jvm系列(七):jvm调优-工具篇
16年的时候花了一些时间整理了一些关于jvm的介绍文章,到现在回顾起来还是一些还没有补充全面,其中就包括如何利用工具来监控调优前后的性能变化.工具做为图形化界面来展示更能直观的发现问题,另一方面一些耗 ...
- 学习笔记——Java类和对象
今天学习了Java的类和对象的相关知识,由于Java面向对象的编程的思想和C++几乎一样,所以需要更多的关注Java的一些不同之处. 1.类 1.1 在类这一块,除了基本的成员变量,成员方法,构造函数 ...
- 作为前端工程师,必须要学会的基本工具之一(AI)
由于之前工作中一直使用的都是photoshop,所以对AI软件的使用并不是很熟,导致使用过程中,遇到了困难----字体无法选中.作为前端工程师都知道,一张设计图中有很多文字,如果纯手打那简直是要累死人 ...
- USB重定向
第一期中,我们一起简要的看了下传统PC和桌面云下USB重定向和USB设备重定向方式的差异,了解了桌面云下外设兼容性问题来源的根源-USB设备本身驱动不规范/不支持, 或者虚拟机驱动实现上与USB设备对 ...
- SQL SERVER 事务日志 解析
1 基本介绍 每个数据库都具有事务日志,用于记录所有事物以及每个事物对数据库所作的操作. 日志的记录形式需要根据数据库的恢复模式来确定,数据库恢复模式有三种: 完整模式,完全记录事物日志,需要定期进行 ...
- h5标签基础 table表格标签
一.表格的定义:用于有规范的显示数据. 二.基本组成: 行<tr>/列<td>/表头<caption>/表标题<th> eg: <table> ...
- Pdf File Writer 中文应用(PDF文件编写器C#类库)
该文由小居工作室(QQ:2482052910) 翻译并提供解答支持,原文地址:Pdf File Writer 中文应用(PDF文件编写器C#类库):http://www.cnblogs.com/ ...
- wemall开源商城免费商城系统部分代码(内含代码地址)
wemall开源商城免费商城系统部分代码,下面分享部分代码,供学习者学习: 开源版把install文件夹下的install.lock删除之后可进行自动安装 后台访问地址:http:// www.xxx ...
- swift -- 集合
swift -- 集合 //注意:集合中的元素是无序的,并且不想数组,字典那样,没有索引和键. 1.创建一个空集合 var set1 : Set<Int> = Set<Int> ...