zoukankan      html  css  js  c++  java
  • 多测师讲解 _接口自动化框架设计_高级讲师肖sir

    背景:因为把传入接口参数、组建测试用例、执行测试用例和发送报告,都放入一个.py文件对于接口的使用非常不灵活就需要数据和接口业务进行分离让代码之间的 耦合性降低。和实现接口的分层管理,所以需要对代码进行封装处理。 接口分层思想: cms_api:组建并发送接口请求 config:放所有接口的入参信息 report:放置运行所有测试用例生成的报告 run:自动加载所有的测试用例、并且运行 testcase:继承unittest单元测试框架、组建接口测试用例 utils:工具类、发送邮件和生成报告模块

    接口分层思想:

    cms_api:组建并发送接口请求

    config:放所有接口的入参信息

    report:放置运行所有测试用例生成的报告

    run:自动加载所有的测试用例、并且运行

    testcase:继承unittest单元测试框架、组建接口测试用例

    utils:工具类、发送邮件和生成报告模块

    (1)接口自动化测试框架分层结构:

    1.1 第一个模块  cofing

    Cms_cofing    模块是存放接口的必要信息

    组建接口:url地址,data、headers

    下面我们定义了三个接口请求参数;

    # cms_api:组建并发送接口请求
    # config:放所有接口的入参信息
    # report:放置运行所有测试用例生成的报告
    # run:自动加载所有的测试用例、并且运行
    # testcase:继承unittest单元测试框架、组建接口测试用例
    # utils:工具类、发送邮件和生成报告模块
    
    # 构建一个接口请求需要哪些参数:
    # Cms环境中的接口
    # 1、登录接口
    logjump_url='http://129.226.122.199/:8080/cms/manage/loginJump.do'
    logjump_data={'userAccount': 'admin','loginPwd': 123456}
    logjump_headers={'Content-Type': 'application/x-www-form-urlencoded'}
    
    
    # 2、用户管理接口
    UserList_url='http://129.226.122.199:8080/cms/manage/queryUserList.do'
    UserList_data={'startCreateDate':'' ,
                'endCreateDate':'',
                'searchValue': '',
                'page': 1}
    UserList_headers={'Content-Type': 'application/x-www-form-urlencoded'}
    
    # 3、搜索用户接口
    list_url='http://129.226.122.199:8080/cms/manage/queryUserList.do'
    list_data={'startCreateDate':'' ,
                'endCreateDate':'' ,
                'searchValue': 'ZSAN',
                'page': 1}
    list_haeders={'Content-Type': 'application/x-www-form-urlencoded'}
    

     

     1.2第二模块快  cms_api

    cms_api:组建并发送接口请求

    '''
    组建接口的请求
    '''
    # 通过封装一个工具类来组建接口请求
    # import requests
    # session=requests.Session() #创建一个对象保持向下接口会话
    # from Cms_cofing.cmsapi import *
    # class C_api(object): 
    #     def __init__(self):
    #         pass
    #     def logjump(self): #构建了一个登录接口
    #         rep=session.post(url=logjump_url,data=logjump_data,json=logjump_headers)
    #         # return rep
    #         # print(rep.text)
    #         js=rep.json() #转换成为js格式
    #         return js
    #     def userlist(self):#用户管理接口
    #         rep=session.post(url=UserList_url,data=UserList_data,json=UserList_headers)
    #         # return rep
    #         print(rep.text)
    #     def list(self):#用户搜索接口
    #         rep=session.post(url=list_url,data=list_data,json=list_haeders)
    #         # return rep
    #         print(rep.text)
    # if __name__ == '__main__':
    #     cms=C_api()#创建一个对象
    #     cms.logjump()#对象调用登录接口
    #     cms.userlist()#对象调用用户管理接口
    #     cms.list()#对象调用搜索接口
    

      三、

    # testcase:继承unittest单元测试框架、组建接口测试用例

    断言:

    # utils:工具类、发送邮件和生成报告模块

    coifng.ini文件

     

     #python 中做关联接口

    import requests #接口模块
    import re #正则匹配模块
    class C_api: #定义一个类
    def cs(self): # 省份接口
    url='http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince'
    header={'Content-Type': 'application/x-www-form-urlencoded'}
    rep=requests.post(url=url,data=header)
    #print (rep.text) #拿到了所有的省
    r =re.findall('<string>(.+?)</string>',rep.text)
    # print type(r) #<type 'list'>
    # 在当前路径中匹配一次或者多次对应的值,匹配到后不贪婪
    return r
    def fun(self): #城市接口
    a =self.cs() #方法的传递
    c_url='http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity'
    data={'byProvinceName':a[16]} #通过索引来取省份当中城市接口的入参
    c_header={'Content-Type': 'application/x-www-form-urlencoded'}
    rep=requests.post(url=c_url,data=data,json=c_header)
    print (rep.text)
    if __name__ == '__main__':
    C =C_api() #创建一个对象
    # C.cs()
    C.fun() #对象调用城市接口
  • 相关阅读:
    软件升级细节卸载删除快捷方式等前需要检测
    安装gitlab的总结
    如何修改vagrant系统的root用户密码
    写一个PHP单例模式
    redis使用笔记
    mysql 删除商品名字重复数据,同时保留最新一条
    杀死僵尸进程
    Django 用户状态管理,认证,失效
    关于iOS多任务的一些扫盲
    ajax异步
  • 原文地址:https://www.cnblogs.com/xiaolehua/p/13810079.html
Copyright © 2011-2022 走看看