自动化测试培训:设计和实现分布式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. 【openstack N版】——走进云计算

    一.云计算 云计算是一种按使用量付费的模式,这种模式提供可用的.便捷的.按需的网络访问,进入可配置的计算资源共享池(资源包括:网络.服务器.存储.应用软件.服务),这些资源能够被快速提供,只需投入很少 ...

  2. 为 instance 配置静态 IP - 每天5分钟玩转 OpenStack(157)

    这是 OpenStack 实施经验分享系列的第 7 篇. 传统运维中为服务器配置静态 IP 是再常见不过的了.但在 OpenStack 环境下只能指定 network,IP 都是 Neutron 从 ...

  3. CSS常用字体Unicode 编码

    在 CSS 中设置字体名称,直接写中文是可以的.但是在文件编码(GB2312.UTF-8 等)不匹配时会产生乱码的错误. 为此,在 CSS 直接使用 Unicode 编码来写字体名称可以避免这些错误. ...

  4. loadrunner入门篇-Vuser发生器

    Vuser 发生器(Visual User Generator,VuGen),主要通过捕获客户端向服务器发送的HTTP请求,将这些请求录制成脚本,在回放时将捕获的HTTP请求再次发送,以达到模拟客户行 ...

  5. 简单聊聊TestNG中的并发

    前言 最近在做项目里的自动化测试工作,使用的是TestNG测试框架,主要涉及的测试类型有接口测试以及基于业务实际场景的场景化测试.由于涉及的场景大多都是大数据的作业开发及执行(如MapReduce.S ...

  6. Java集合学习笔记

      在Java中,我们经常听到Collections框架.Collection类以及Collections类.这三者名字相似,但是从概念上讲却是不同的.Collections框架泛指Java中用于存储 ...

  7. Spring Boot 相关文章目录

    目录 监控 SpringBoot之旅 -- SpringBoot 项目健康检查与监控

  8. PowerDesigner建模应用(一)逆向工程,配置数据源并导出PDM文件

    物理数据模型(Physical Data Model)PDM,提供了系统初始设计所需要的基础元素,以及相关元素之间的关系:数据库的物理设计阶段必须在此基础上进行详细的后台设计,包括数据库的存储过程.操 ...

  9. 介绍Office 365 中文用户社区 4.0

    本文于2017年3月18日首发于LinkedIn,原文链接在这里 为了给广大用户提供一个可以自由交流.切磋技术的平台,微软和其他一些国际知名的大型软件公司一样,都有创建用户社区(Community,或 ...

  10. VMware Ubuntu16.04虚拟机安装MATLAB R2016b

    因为这学期上的模式识别课程需要在Linux环境下使用Matlab,所以就在Windows10主机上的Vmware Workstation上的Ubuntu虚拟机上安装了最新版本的MATLAB. 环境: ...