自动化测试培训:设计和实现分布式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调用的更多相关文章

  1. QTP自动化测试培训:描述编程之WebElement

    QTP自动化测试培训:描述编程之WebElement   通过描述性编程技术,来描述出来输入框: set po=browser("creationtime:=0").page(&q ...

  2. 手机自动化测试培训:appium目录结构分析

    手机自动化测试培训:appium目录结构分析   移动端的自动化测试越来越普遍,poptest率先退出移动端自动化测试的课程,以appuim的python脚本版本作为授课基础,后期陆续退出java版本 ...

  3. 分布式远程服务调用(RPC)框架

    分布式远程服务调用(RPC)框架 finagle:一个支持容错,协议无关的RPC系统 热门度(没变化) 10.0 活跃度(没变化) 10.0  Watchers:581 Star:6174 Fork: ...

  4. 《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)

    1.简介 上一篇宏哥介绍了如何设计支持不同浏览器测试,宏哥的方法就是通过来切换配置文件设置的浏览器名称的值,来确定启动什么浏览器进行脚本测试.宏哥将这个叫做浏览器引擎类.这个类负责获取浏览器类型和启动 ...

  5. Eclipse+Selenium自动化测试脚本设计V1.0

    Eclipse+Selenium自动化测试脚本设计V1.0 http://www.docin.com/p-803032251.html

  6. 自动化测试 接口自动化及UI自动化测试平台设计演示

    接口自动化及UI自动化测试平台设计演示   by:授客  QQ:1033553122 欢迎加入全国软件测试交流qq群:7156436 大家好,我是授客. 本视频意在分享个人,基于Python,Djan ...

  7. Atitit.分布式远程调用  rpc  rmi  CORBA的关系

    Atitit.分布式远程调用  rpc  rmi  CORBA的关系 1. 远程调用(包括rpc,rmi,rest)1 2. 分布式调用大体上就分为两类,RPC式的,REST式的1 3. RPC(远程 ...

  8. Python3简易接口自动化测试框架设计与实现(中)

    目录 7.Excel数据读取 7.1.读取配置文件 7.1.编写Excel操作类 8.用例组装 9.用例运行结果校验 10.运行用例 11 .小结 上一篇:Python3简易接口自动化测试框架设计与实 ...

  9. java使用netty模拟实现一个类dubbo的分布式服务调用框架

    本文较长,如果想直接看代码可以查看项目源码地址: https://github.com/hetutu5238/rpc-demo.git 要想实现分布式服务调用框架,我们需要了解分布式服务一般需要的功能 ...

随机推荐

  1. d3.js 绘制极坐标图(polar plot)

    0.引言 在极坐标系中,任意位置可由一个夹角和一段相对原点(极点)的距离表示.也就是说,我们可以用 (angle,r) 来表示极坐标系中的点. 1.数据 假设我们有如下数据集[ [10, 0.2], ...

  2. jvm系列(七):jvm调优-工具篇

    16年的时候花了一些时间整理了一些关于jvm的介绍文章,到现在回顾起来还是一些还没有补充全面,其中就包括如何利用工具来监控调优前后的性能变化.工具做为图形化界面来展示更能直观的发现问题,另一方面一些耗 ...

  3. 学习笔记——Java类和对象

    今天学习了Java的类和对象的相关知识,由于Java面向对象的编程的思想和C++几乎一样,所以需要更多的关注Java的一些不同之处. 1.类 1.1 在类这一块,除了基本的成员变量,成员方法,构造函数 ...

  4. 作为前端工程师,必须要学会的基本工具之一(AI)

    由于之前工作中一直使用的都是photoshop,所以对AI软件的使用并不是很熟,导致使用过程中,遇到了困难----字体无法选中.作为前端工程师都知道,一张设计图中有很多文字,如果纯手打那简直是要累死人 ...

  5. USB重定向

    第一期中,我们一起简要的看了下传统PC和桌面云下USB重定向和USB设备重定向方式的差异,了解了桌面云下外设兼容性问题来源的根源-USB设备本身驱动不规范/不支持, 或者虚拟机驱动实现上与USB设备对 ...

  6. SQL SERVER 事务日志 解析

    1 基本介绍 每个数据库都具有事务日志,用于记录所有事物以及每个事物对数据库所作的操作. 日志的记录形式需要根据数据库的恢复模式来确定,数据库恢复模式有三种: 完整模式,完全记录事物日志,需要定期进行 ...

  7. h5标签基础 table表格标签

    一.表格的定义:用于有规范的显示数据. 二.基本组成: 行<tr>/列<td>/表头<caption>/表标题<th> eg: <table> ...

  8. Pdf File Writer 中文应用(PDF文件编写器C#类库)

    该文由小居工作室(QQ:2482052910)    翻译并提供解答支持,原文地址:Pdf File Writer 中文应用(PDF文件编写器C#类库):http://www.cnblogs.com/ ...

  9. wemall开源商城免费商城系统部分代码(内含代码地址)

    wemall开源商城免费商城系统部分代码,下面分享部分代码,供学习者学习: 开源版把install文件夹下的install.lock删除之后可进行自动安装 后台访问地址:http:// www.xxx ...

  10. swift -- 集合

    swift -- 集合 //注意:集合中的元素是无序的,并且不想数组,字典那样,没有索引和键. 1.创建一个空集合 var set1 : Set<Int> = Set<Int> ...