我们在用python做接口测试工作的时候很多接口返回的都是json格式的数据,想要操作这种数据有多种方式:
1.通过正则表达式提取;
2.通过python的字符串拆分;
3.通过JsonPath语法操作;
如果操作的响应数据时json格式那jsonpath应该是最方便的一种方式;
第一步:导包:jsonpath
import jsonpath
第二步通过jsonpath语法操作json数据:jsonpath.jsonpath(数据,jsonpath语法)
1 # 从json文件中读取数据 2 with open("./source_file/info.json",'r',encoding='utf-8')as fp: 3 data = json.load(fp) 4 print(data,"<--->",type(data)) # {'username': '张三', 'age': 20, 'sex': '男'} <---> <class 'dict'> 5 6 # 从数据中取出username 7 print("data-->",jsonpath.jsonpath(data, "$.username")) # data--> ['张三']
这里要注意只有从json文件中读取出的数据和接口明确返回了json数据,或者定义字典类型数据可以通过jsonpath进行操作,如果定义一个json字符串是无法通过jsonpath操作的
自定义不同类型的数据
dict1 = {"username": "张三", "age": 20, "sex": "男"} print(dict1,"<--->",type(dict1)) dict2 = {'username': '张三', 'age': 20, 'sex': '男'} print(dict2,"<--->",type(dict2)) str1 = str({"username": "张三", "age": 20, "sex": "男"}) print(str1,"<--->",type(str1)) str2 = str({'username': '张三', 'age': 20, 'sex': '男'}) print(str2,"<--->",type(str2))
通过jsonpath去解析数据取出username的值
1 print("dict1 -->", jsonpath.jsonpath(dict1, "$.username")) # dict1 --> ['张三'] 2 print("dict2 -->", jsonpath.jsonpath(dict2, "$.username")) # dict2 --> ['张三'] 3 print("str1 -->", jsonpath.jsonpath(str1, "$.username")) # str1 --> False 4 print("str2 -->", jsonpath.jsonpath(str2, "$.username")) # str2 --> False
更多的jsonpath语法请参考:https://www.cnblogs.com/XhyTechnologyShare/p/13906489.html