python的Jsonpath模块的使用

我们在用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

 

posted @ 2021-01-23 11:44  不休不止  阅读(461)  评论(0编辑  收藏  举报