接着上一篇分享
这次主要分享的是响应数据的提取和保存,在做接口测试的时候,我们肯定会遇到需要接口直接数据调用,比如A接口需要用到B接口响应的数据,但是我们需要做的是设计提取值的规则和保存下来。
先看之前测试数据设计结构
- testCase:
description: login success
name: login
method: post
uri: /v3/api/user/phone_login
headers:
Content-Type: application/json
payload:
phone: "13528872802"
password: "123456abc"
callbackType: 0
extract:
token: $.data.token
validate:
- equal_to:
$.code: 0
- equal_to:
$.code: 0
- testCase:
description: login fail
name: login
method: post
uri: /v3/api/user/phone_login
headers:
Content-Type: application/json
payload:
phone: "1352887280xxxx"
password: "123456abcaaaaa"
callbackType: 0
validate:
- equal_to:
$.code: 0
- equal_to:
$.code: 0
extract下面就是需要提取的值,token表示保存的变量名,$.data.token是要从响应的提取值的jsonpath的路径。我们提取和保存需要用到的值主要用到python的两个函数
setattr(obj,name,value)
getattr(obj,name)
setattr设置一个对象里面,getattr是从一个对象里面获取一个变量
首先新建一个文件envData.py,新建一个类
#!/usr/bin/python
# -*- coding: utf-8 -*-
class EnvData:
pass
# 不用实现
我们在新建一个utils.py 文件
#!/usr/bin/python
# -*- coding: utf-8 -*-
from common.envData import EnvData
import jsonpath
class Utils:
@staticmethod
def extract(extract_dict: dict, response):
"""
:param extract_dict: 需要提取值的字典
:param response 返回的响应
:return:
"""
for key, val in extract_dict.items():
value = jsonpath.jsonpath(response, val)[0] # 提取回来的是list格式,取第一个值
setattr(EnvData, key, str(value)) # 把值设置保存到EnvData类作为类变量
@staticmethod
def get_env_value(name):
"""
:param name: 变量名
:return: 返回值
"""
return getattr(EnvData, name, None) #提取值并返回
写好了,我们实验下,是否能够保存和取出来,示例代码
#!/usr/bin/python
# -*- coding: utf-8 -*-
from common.request_handler import request_handler
from common.utils import Utils
method = 'post'
url = 'https://api2.mubu.com/v3/api/user/phone_login'
headers = {'Content-Type': "application/json"}
payload = {
"phone": "13528872802",
"password": "Aa12345678",
"callbackType": 0
}
r = request_handler(method, url, headers, payload)
extract_dict = {
"token": "$.data.token"
}
Utils.extract(extract_dict, r) # 设置值
token = Utils.get_env_value('token') # 提取值
print(token)
我们可以看到token的值已经被正确的设置到EnvData这个类,也从EnvData中正确获取到token的值。
本文分享自 暴走的软件测试Tester 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!