美文网首页测试相关
流程化的测试脚本抽象为测试框架

流程化的测试脚本抽象为测试框架

作者: 每天进步一点点变成更好的自己 | 来源:发表于2021-11-08 12:56 被阅读0次

    我们习惯性的惯性思维,都是线性操作,第一步,第二步,第三步。但是真正到了一定的高阶,就会发现很多东西需要总结、归纳,形成理论,也就顺理成章的抽象成了测试框架。

    1.开发工程师和测试工程师视角分析

    1.开发工程师视角,通过写代码实现产品需求或原型设计,他们会关心高并发、低消耗、分布式、多冗余,更多关注代码的性能和可靠性。
    2、测试工程师视角,目标都是保障交付项目的质量,那些业务侧的表现,在大多数情况下不是我们关心的重点。

    2.搭建前准备工作

    python语言进行接口测试,需要用到一个三方库,requests
    安装requests库:pip install requests

    • 1.get方法
    # Python代码中引入requests库,引入后才可以在你的代码中使用对应的类以及成员函数
    import requests
    # 建立url_index的变量,存储战场的首页
    url_index='http://127.0.0.1:12356/'
    # 调用requests类的get方法,也就是HTTP的GET请求方式,访问了url_index存储的首页URL,返回结果存到了response_index中
    response_index = requests.get(url_index)
    # 存储返回的response_index对象的text属性存储了访问主页的response信息,通过下面打印出来
    print('Response内容:'+response_index.text)
    
    • 2.post方法
    # python代码中引入requests库,引入后才可以在你的代码中使用对应的类以及成员函数
    import requests
    # 建立url_login的变量,存储战场系统的登录URL
    url_login = 'http://127.0.0.1:12356/login'
    # username变量存储用户名参数
    username = 'criss'
    # password变量存储密码参数
    password = 'criss'
    # 拼凑body的参数
    payload = 'username=' + username + '&password=' + password
    # 调用requests类的post方法,也就是HTTP的POST请求方式,
    # 访问了url_login,其中通过将payload赋值给data完成body传参
    response_login = requests.post(url_login, data=payload)
    # 存储返回的response_index对象的text属性存储了访问主页的response信息,通过下面打印出来
    print('Response内容:' + response_login.text)
    

    3.测试框架抽象

    在准备工作中,我们编写 get方法和post方法,但是如何提炼出来,形成我们可以通过参数传递,就可以共用操作呢。
    操作步骤:
    1、建议一个叫common.py的共的方法类。
    2、修改接口对应的单接口测试脚本。
    3、修改接口对应的多接口测试脚本。

    • 1.common.py的方法类
    # 定义一个common的类,它的父类是object
    class Common(object):
      # common的构造函数
      def __init__(self):
        # 被测系统的根路由
        self.url_root = 'http://127.0.0.1:12356'
      
    # 封装你自己的get请求,uri是访问路由,params是get请求的参数,如果没有默认为空 
     def get(self, uri, params=''):
        # 拼凑访问地址
        url = self.url_root + uri + params
        # 通过get请求访问对应地址
        res = requests.get(url)
        # 返回request的Response结果,类型为requests的Response类型
        return res
     
     # 封装你自己的post方法,uri是访问路由,params是post请求需要传递的参数,如果没有参数这里为空
     def post(self, uri, params=''):
        # 拼凑访问地址
        url = self.url_root + uri
        if len(params) > 0:
          # 如果有参数,那么通过post方式访问对应的url,并将参数赋值给requests.post默认参数data
          # 返回request的Response结果,类型为requests的Response类型
          res = requests.post(url, data=params)
        else:
          # 如果无参数,访问方式如下
          # 返回request的Response结果,类型为requests的Response类型
          res = requests.post(url)
        return res
    
    • 2.修改接口的单接口测试脚本
      实例一:
    # Python代码中引入requests库,引入后才可以在你的代码中使用对应的类以及成员函数
    from common import Common
    # 首页的路由
    uri = '/'
    # 实例化自己的Common
    comm = Common()
    #调用你自己在Common封装的get方法 ,返回结果存到了response_index中
    response_index = comm.get(uri)
    # 存储返回的response_index对象的text属性存储了访问主页的response信息,通过下面打印出来
    print('Response内容:' + response_index.text)
    

    实例二:

    #登录页路由
    uri = '/login'
    # username变量存储用户名参数
    username = 'criss'
    # password变量存储密码参数
    password = 'criss'
    # 拼凑body的参数
    payload = 'username=' + username + '&password=' + password
    comm = Common()
    response_login = comm.post(uri,params=payload)
    print('Response内容:' + response_login.text)
    
    • 3.多接口测试
    
    # Python代码中引入requests库,引入后才可以在你的代码中使用对应的类以及成员函数
    from common import Common
    # 建立uri_index的变量,存储战场的首页路由
    uri_index = '/'
    # 实例化自己的Common
    comm = Common('http://127.0.0.1:12356')
    #调用你自己在Common封装的get方法 ,返回结果存到了response_index中
    response_index = comm.get(uri_index)
    # 存储返回的response_index对象的text属性存储了访问主页的response信息,通过下面打印出来
    print('Response内容:' + response_index.text)
    
    # uri_login存储战场的登录
    uri_login = '/login'
    # username变量存储用户名参数
    username = 'criss'
    # password变量存储密码参数
    password = 'criss'
    # 拼凑body的参数
    payload = 'username=' + username + '&password=' + password
    response_login = comm.post(uri_login,params=payload)
    print('Response内容:' + response_login.text)
    
    # uri_selectEq存储战场的选择武器
    uri_selectEq = '/selectEq'
    # 武器编号变量存储用户名参数
    equipmentid = '10003'
    # 拼凑body的参数
    payload = 'equipmentid=' + equipmentid
    response_selectEq = comm.post(uri_selectEq,params=payload)
    print('Response内容:' + response_selectEq.text)
    
    # uri_kill存储战场的选择武器
    uri_kill = '/kill'
    # 武器编号变量存储用户名参数
    enemyid = '20001'
    # 拼凑body的参数
    payload = 'enemyid=' + enemyid+"&equipmentid="+equipmentid
    response_kill = comm.post(uri_kill,params=payload)
    print('Response内容:' + response_kill.text)
    
    如果我们封住好的Common就变成了如下的样子:
    
    # 定义一个common的类,它的父类是object
    class Common(object):
    # common的构造函数
     def __init__(self,url_root):
    # 被测系统的跟路由
        self.url_root = url_root 
    
    # 封装你自己的get请求,uri是访问路由,params是get请求的参数,如果没有默认为空
     def get(self, uri, params=''):
     # 拼凑访问地址
     url = self.url_root + uri + params
     # 通过get请求访问对应地址
     res = requests.get(url)
     # 返回request的Response结果,类型为requests的Response类型
     return res
    
     # 封装你自己的post方法,uri是访问路由,params是post请求需要传递的参数,如果没有参数这里为空
    def post(self, uri, params=''):
     # 拼凑访问地址
     url = self.url_root + uri
     if len(params) > 0:
     # 如果有参数,那么通过post方式访问对应的url,并将参数赋值给requests.post默认参数data
     # 返回request的Response结果,类型为requests的Response类型
     res = requests.post(url, data=params)
     else:
    # 如果无参数,访问方式如下# 返回request的Response结果,类型为requests的Response类型
     res = req
    
    image.png

    4.测试脚本到测试框架的转换过程

    测试框架就是在测试脚本中不断抽象和封装得来的。测试脚本到测试框架的转换过程:
    1.不断撰写测试脚本,所有的抽象和封装都是站在已有的测试脚本基础之上的。
    2.多观察已经写好的测试脚本,找出其中的重叠部分,最后完成封装。
    3.不断循环又循序渐进的过程,在工作中始终保持思考和警惕,发现重复马上进行框架封装。

    相关文章

      网友评论

        本文标题:流程化的测试脚本抽象为测试框架

        本文链接:https://www.haomeiwen.com/subject/sgadzltx.html