处理cookie和jsonpath使用
| case_num | title | url | method | params | data | json | cookies | headers | except |
|---|---|---|---|---|---|---|---|---|---|
| neeo_001 | token_登录 | http://www.neeo.cc:6002/pinter/bank/api/login2 | post | 空的就是不需要的参数 | {"userName": "admin", "password": "1234"} | {"code":0} | |||
| neeo_002 | token_查询余额 | http://www.neeo.cc:6002/pinter/bank/api/query2 | get | {"userName": "admin"} | {"testfan-token": "${neeo_001>data>data}$"} | {"code":0} | |||
| neeo_003 | cookies_登录 | http://www.neeo.cc:6002/pinter/bank/api/login | post | {"userName": "admin", "password": "1234"} | {"code":0} | ||||
| neeo_004 | cookies_查询余额 | http://www.neeo.cc:6002/pinter/bank/api/query | get | {"userName": "admin"} | neeo_003 | {"code":0} |
headers的{"testfan-token": "${neeo_001>data>data}$"} 是个键值对,值的意思${neeo_001>data>data}$从neeo_001用例里的data参数中拿到data里的token
# import requests # neeo_001 # # response = requests.request(method='post', url='http://www.neeo.cc:6002/pinter/bank/api/login2', data={"userName":"admin", "password":1234}) # # data = response.json() # {'code': '0', 'message': 'success', 'data': 'c7cc8dc46af242bebd8fc318127dccfe'} # # neeo_002 # response = requests.request(method='get', url='http://www.neeo.cc:6002/pinter/bank/api/query2', params={"userName": "admin"}, # headers={"testfan-token": data['data']} # ) # print(response.json()) # {'code': '0', 'message': 'success', 'data': '$ 92,937,464'}
""" JsonPath: 正则匹配: ${neeo_001>data>data.info.address.phone}$ --> neeo_001>data>data.info.address.phone --> abc 正则替换:${neeo_001>data>data.info.address.phone}$ --> abc abc ${}$ ${neeo_001>data>data.info.address.phone}$ abc ${neeo_001>headers>data}$ ${neeo_001>params>data}$ neeo_001 data data.info.address.phone - neeo_001:依赖数据来自于哪个用例 - data: 来自于哪个用例中的什么参数: - response.json - headers - cookies - params - data.info.address.phone: 数据所在的路径 neeo_001 data data case_num """
正则匹配:(在线正则工具)

Json Path和JSON文档有关系,正如XPath之于XML文档一样,JsonPath为Json文档提供了解析能力,通过使用JsonPath,你可以方便的查找节点、获取想要的数据,JsonPath是Json版的XPath。
https://blog.csdn.net/koflance/article/details/63262484
https://www.cnblogs.com/Neeo/articles/12787888.html
pip install jsonpath-rw data = { 'code': '0', 'message': 'success', 'data': '95e947dd5a684105b97cf74d3a4514a8', "info": { "address": "北京", "phone": "1212313123" }, "item": [ {"user": "zhangkai"}, {"user": "wuaihua"}, ], "userName": "zhangkai", "password": 1234, } # print(data['info']['phone']) # a = 'info.address' a = 'item.[1].user' # a = '$..user' from jsonpath_rw import parse # # js_exe = parse(a) # 发一个解析路径类型是str的 # match = js_exe.find(data) # print([i.value for i in match]) import re import json data2 = { "userName": "${neeo_002>params>userName}$", "password": "${neeo_003>data>password}$", "user": "${neeo_003>data>item.[0].user}$" } pattern = re.compile('\${(.*?)}\$') # 正则匹配 match_list = pattern.findall(json.dumps(data2)) # ['neeo_002>params>userName', 'neeo_003>data>password', 'neeo_003>data>item.[0].user'] print(match_list) for i in match_list: case, params, json_path = i.split(">") # neeo_002 params userName print(case, params, json_path) match = parse(json_path).find(data) # [DatumInContext(value='zhangkai', path=Fields('userName'), context=DatumInContext(value={'code': '0', 'message': 'success', 'data': '95e947dd5a684105b97cf74d3a4514a8', 'info': {'address': '北京', 'phone': '1212313123'}, 'item': [{'user': 'zhangkai'}, {'user': 'wuaihua'}], 'userName': 'zhangkai', 'password': 1234}, path=This(), context=None))] temp = [v.value for v in match][0] # zhangkai # 1234 data2= re.sub(pattern, temp, json.dumps(data2), 1) # {"userName": "zhangkai", "password": "${neeo_003>data>password}$", "user": "${neeo_003>data>item.[0].user}$"} print(data2) # break
处理cookie的思路
思路:
-
在每个用例发请求的时候,查看响应结果是否有cookies返回
-
如果有cookie返回,就把保存起来
-
保存到本的指定目录,以域名命名,当有接口需要cookies的时候,去指定目录里根据域名匹配查找cookies,然后携带。(psotman cookie管理器的思路)
-
将cookies保存到当前的用例对象中,可以为用例对象新建一个临时字段,来保存cookies,谁要用,就来找就完了。
-
问题:如何获取域名?
从url上切

浙公网安备 33010602011771号