接口自动化框架封装之统一请求封装及通过文件实现接口关联

接口自动化测试框架封装目的:

简化自动化框架的落地,提高投入和产出比,只要一个人封装好框架,另外的测试通过写yaml测试用例即可实现接口自动化

1.统一请求的封装

去除多余重复的代码

可跨py文件实现通过一个session来自动关联有cookie的接口

设置统一公共参数,统一文件处理,统一异常处理,统一日志监控,统一的用例校验等

import requests

class RequestUtil:

    sess = requests.session();

    def send_all_request(self,**kwargs):
        #处理公共参数
        total_headers= {
            'Accept-Encoding': 'gzip, deflate',
            'Accept-Language': 'zh-CN,zh;q=0.9,kog=0.8',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36',
            'X-Requested-With': 'XMLHttpRequest'
        }
        for key,value in kwargs.items():
            if key == 'headers':
                kwargs["headers"].update(total_headers)

        res = RequestUtil.sess.request(**kwargs)
        return res
class Test_api:


   
    def test_login(self):

       headers = {
            'Content - Type': 'application/json',
            'Accept': ' * / * '
        }
        res=
        RequestUtil().send_all_request(method=method,url=url,json=jsondata,headers=headers)
    
        data = {"token":jsonpath.jsonpath(res.json(),'$.data.token',)[0]}
        write_yaml(data)

        print(data)


        print(res.json())

2.数据和代码分离实现数据驱动

将测试数据与测试代码完全分离,提高代码复用性,便于维护和扩展测试用例

直接把测试数据写入yaml文件,写一个读取yaml文件的方法即可访问数据

读取yaml文件前需要线安装pyyaml和导入yaml模块

在common目录下新建yaml_util.py文件

读取yaml文件方法 

def read_testcasecreatAC(yaml_path):
    with open("test_creatActivity.yaml",encoding="utf-8")as f:
        value = yaml.safe_load(f)
        return value
  • 数据提取:
    • URL:caseinfo["request"]["url"]
    • 方法:caseinfo["request"]["method"]
    • 数据:caseinfo["request"]["json"]
    • 头部:caseinfo["request"]["headers"]
@pytest.mark.parametrize("caseinfo", read_testcasecreatAC("test_creatActivity.yaml"))
    def test_creatActivity(self,caseinfo):
        url = caseinfo["request"]["url"]
        method = caseinfo["request"]["method"]
        headers = caseinfo["request"]["headers"]
        headers["User_token"] = read_yaml("token")
        e = headers["User_token"]
        json= caseinfo["request"]["json"]
 res = RequestUtil().send_all_request(method=method,url=url,json=json,headers=headers)

 res.status_code == 200
  • 动态传参:从yaml读取token值并更新请求数据
  • 用例结构:
    • 参数传递:caseinfo参数接收yaml中的数据字典
    • 读取方法:使用@pytest.mark.parametrize装饰器读取yaml文件
    • feature:表示接口所属模块
    • story:接口名称
    • title:用例标题
    • request:包含method、url等请求信息
    • validate:断言内容

yaml文件数据用例: 

-
  feature: 抽奖系统
  story:  创建活动接口
  title: 验证创建活动接口正常返回
  request:
    method: post
    url: http://82.157.143.27:8083/activity/create
    json:
      activityName: "抽奖测试"
      description: "测试"
      activityPrizeList:
        - prizeId: 26
          prizeAmount: 1
          prizeTiers: "FIRST_PRIZE"
        - prizeId: 25
          prizeAmount: 1
          prizeTiers: "SECOND_PRIZE"
      activityUserList:
        - userId: 61
          userName: "李向阳"
        - userId: 60
          userName: "张三"
    headers:
      User_token: ""
      Content-Type: 'application/json'
      Accept: "application/json"
  validate: null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值