自动化测试培训:设计和实现分布式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 要想实现分布式服务调用框架,我们需要了解分布式服务一般需要的功能 ...
随机推荐
- Webpack学习系列(一)
一:全局安装: npm install webpack -g (-g全局安装) npm init -y (初始化参数) npm install webpack --save-dev (安装在当前 ...
- STM32F4的FPU单元讲解
搞STM32F407单片机的时候 看见的关于STM32F4系列的FPU 单元讲解 比较精彩的博客 于是特意转载 和大家分享 转自:http://blog.renren.com/blog/256814 ...
- RancherOS 学习笔记(一)
今天只是简单了解下rancheros,以及尝试安装了下. 这是官网文档:http://docs.rancher.com/os/ 这是官网Github地址:https://github.com/ranc ...
- vpn安装
尾戒0717 centos 6.5 openvpn 安装 安装环境: 系统:centos 6.5 openvpn:openvpn-2.2.1 lzo:lzo-2.09 下载地址:http:/ ...
- 使用PHP生成二维码(PHPQRCode)
关于什么是二维码,可以阅读 http://baike.baidu.com/view/132241.htm 这里就不多讲了,二维码的应用非常广泛,似乎一夜之间渗透到我们生活的方方面面,地铁广告.报纸.火 ...
- VUE2.0实现购物车和地址选配功能学习第一节(来源--慕课网河畔一角)
第一节 vue知识 vue-resource:和后台交互的一个插件,实现get.post和jsonp等功能.(替代jQuery) vue特点: 1.易用:通过创建vue实例,{{}}绑定数据十分方便 ...
- Chosen通用初始化
一直在用Chosen这个js插件,其目的就是美化下拉框.github地址:https://harvesthq.github.io/chosen/ no_results_text:"xxxxx ...
- 把Eclipse项目转换成Maven项目
把Maven项目转换成Eclipse项目只要使用Maven的Eclipse插件就能做到 mvn eclipse:eclipse 其实Maven的Eclipse插件也有把Eclipse项目转换成Mave ...
- ASP日期格式化函数
Public Function GetFormatDate(DateAndTime, para)On Error Resume NextDim y, m, d, h, mi, s, strDateTi ...
- 算法模板——平衡树Treap 2
实现功能:同平衡树Treap 1(BZOJ3224 / tyvj1728) 这次的模板有了不少的改进,显然更加美观了,几乎每个部分都有了不少简化,尤其是删除部分,这个参照了hzwer神犇的写法,在此鸣 ...