python自动化关联接口返回值参数化(1)初阶

转载请注明出处:https://blog.csdn.net/qq_33528044/article/details/108489280

1、返回数据参数化

1.1 常处理接口请求

返回值参数化是接口请求中避免大量维护测试用例关键,如何做好参数化是能否提高自动化用例转换效率的关键。通常接口自动化会将接口返回值所有内容保存到临时变量,在需要使用时按照层级接口取出,依据自定义规则替换到请求数据。

痛点:

  1. 保存完整数据结构内存消耗大
  2. 替换时需要写出长长的层级结构
  3. 接口使用到相同数据时,每次替换都需要写层级结构替换
  4. 替换数据时需要多次查看接口文档,观察层级结构

常用替换规则举例

import re
# 实例:接口B请求时依赖接口A返回的数据, A接口返回数据dict1,接口A请求参数request_body:`
dict1 = {
   "code":0,
         "message": "操作成功",
         "data": [
             {
   "id": 1, "name": "大众", "car_info": {
   "product_id":123}},
             {
   "id": 2, "name": "本田", "car_info": {
   "product_id":123}},
    		 {
   "id": 3, "name": "奥迪", "car_info": {
   "product_id":123}}
         ]}
request_body = "{'product_id':${dict1.data.0.car_info.product_id}}"
# 常用方法将dict1赋值给一个全局零食变量temprory_data
temprory_data = {
   }
temprory_data['dict1'] = dict1
# 定义一个函数执行替换规则 replace_request_data
def replace_request_data(request_body):
    res = re.findall('\${(.*?)}', request_body)
    index_list = res[0].split('.')
    value = temprory_data
    for index in index_list:
        value = value[eval(index)] if re.findall('^\d+$', index) else value[index]
    return request_body.replace('${'+res[0]+'}', str(value))
res = replace_request_data(request_body)
print(res)
>>> {
   'product_id':123}

以上替换数据使用${dict1.data.0.car_info.product_id}, 使用时执行层级匹配,当返回数据层结构更为复杂,请求参数需要多出使用到数据替换时将大大增加测试用例请求参数的编写难度。
1.2 使用key方法保存返回值

import re
save_response_key = {
   }
dict1 = {
   "code":0,
         "message": "操作成功",
         "data": [
             {
   "id": 1, "name": "大众", "car_info": {
   "product_id": 123}},
             {
   "id": 2, "name": "本田", "car_info": {
   "product_id": 123}},
    {
   "id": 3, "name": "奥迪", "car_info": {
   "product_id": 123}}
         ]}
def save_key(request_body, save_key_list):
    request_str = 
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值