• 自动化测试培训:设计和实现分布式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 加载指定脚本

    第四步:可以进一步设计优化改控制软件

           加入多个客户端

  • 相关阅读:
    领域驱动设计概念(Domain-driven Design), Flower(响应式微服务框架)
    主流RPC框架通讯协议实现原理与源码解析
    响应式微服务框架Flower——快速上手
    netty源码-server端绑定端口流程
    ubuntu 20.04版本更新软件源为国内源(清华、网易、阿里云等等)
    ubuntu20.04源码安装nginx
    docker环境下Java获取cpu核心数不准确,实际上是宿主机的cpu核心数
    利用docker快速搭建创建开发环境
    mac配置python环境
    Apache Maven-创建项目
  • 原文地址:https://www.cnblogs.com/poptest/p/4969049.html
Copyright © 2020-2023  润新知