前言
pytest-yaml-yoyo 插件可以支持3种表达式提取接口返回结果,jsonpath 和 jmespath 适合解析返回的json数据。
非json 数据的结果可以用re 正则表达式取值。
re 正则取值
访问我的博客地址https://www.cnblogs.com/yoyoketang/
test_re.yml 用例文件内容
# 上海悠悠 wx:283340479
# blog:https://www.cnblogs.com/yoyoketang/
test_yoyo_blog:
name: re取值
request:
url: https://www.cnblogs.com/yoyoketang/
method: GET
validate:
- eq: [status_code, 200]
结果返回
如果我想取出title 的内容 <title>上海-悠悠 - 博客园</title>
可以用正则取值 <title>(.+?)</title>
test_yoyo_blog:
name: re取值
request:
url: https://www.cnblogs.com/yoyoketang/
method: GET
validate:
- eq: [status_code, 200]
- eq: ['<title>(.+?)</title>', 上海-悠悠 - 博客园]
运行结果
2023-06-07 19:42:17 [INFO]: validate 校验内容-> [{'eq': ['status_code', 200]}, {'eq': ['<title>(.+?)</title>', '上海-悠悠 - 博客园']}]
2023-06-07 19:42:17 [INFO]: validate 校验结果-> eq: [200, 200]
2023-06-07 19:42:17 [INFO]: validate 校验结果-> eq: [上海-悠悠 - 博客园, 上海-悠悠 - 博客园]
正则取值可以用固定的语法 .+?
和 .*?
json 内容也可以正则取值
test_re2.yml
# 上海悠悠 wx:283340479
# blog:https://www.cnblogs.com/yoyoketang/
test_re2:
name: re取值
request:
url: /api/test/demo
method: GET
validate:
- eq: [status_code, 200]
- eq: ['"code": (.+?),', '0']
- eq: ['"msg": "(.+?)"', '成功success!']
运行结果
2023-06-07 19:46:28 [INFO]: raw text <--: {"code": 0, "msg": "成功success!", "data": [{"age": 20, "create_time": "2019-09
-15", "id": 1, "mail": "[email protected]", "name": "yoyo", "sex": "M"}, {"age": 21, "create_time": "2019-09-16", "id": 2,
"mail": "[email protected]", "name": "yoyo111", "sex": "M"}]}
2023-06-07 19:46:28 [INFO]: validate 校验内容-> [{'eq': ['status_code', 200]}, {'eq': ['"code": (.+?),', '0']}, {'eq': ['
"msg": "(.+?)"', '成功success!']}]
2023-06-07 19:46:28 [INFO]: validate 校验结果-> eq: [200, 200]
2023-06-07 19:46:28 [INFO]: validate 校验结果-> eq: [0, 0]
2023-06-07 19:46:28 [INFO]: validate 校验结果-> eq: [成功success!, 成功success!]
json 数据的结果也可以用re 正则表达式取值。
标签:200,.+,yaml,32,re,validate,eq,取值 From: https://www.cnblogs.com/yoyoketang/p/17464399.html