HttpRunner接口自动化-Jsonpath/正则提取返回结果(实战)


前言

HttpRunner 响应结果字段提取方式:
jmespath 表达式;
正则表达式(regex);

响应结果为 JSON 结构,支持采用 jmespath 表达式进行参数提取。
返回的非json格式,可以用正则表达式(regex) 提取

1、extract 提取返回结果

extract 的对象仅有 5 种类型:
status_code:提取响应状态码,例如 200、404
proto:提取协议类型,例如 “HTTP/2.0”、“HTTP/1.1”
headers:从响应 headers 中提取字段,例如 headers.name
cookies:从响应 cookies 中提取字段,例如 cookies.Token
body:从响应 body 中提取字段,例如 body.args.foo1

如果表达式中存在 - 的情况,那么需要加引号处理。

headers."Content-Type"

例子:

config:
  name: 引用变量
  variables:
    username: test123

teststeps:
-
  name: post
  variables:
    username: test456
  request:
    method: POST
    url: http://httpbin.org/post
    json:
      username: ${
    
    username}
      password: "123456"
  extract:
    url: body.url
    origin: body.origin
    agent: headers."Content-Type"
  validate:
    - eq: [status_code, 200]

使用hrp run 命令行运行

hrp run xuexi/test_extract.yml --gen-html-report

运行日志可以看到提取的结果

3:53PM INF run step end exportVars={
    
    "agent":"application/json","origin":"183.193.27.78","url":"http://httpbin.org/post"} step=post succ
ess=true type=request
3:53PM INF run testcase end testcase="引用变量"
3:53PM INF create folder path="results\\20230505155322"
3:53PM INF generate HTML report path="results\\20230505155322\\report.html"

2、正则表达式(regex)

响应结果为 JSON 结构,支持采用 jmespath 表达式进行参数提取。返回的非json格式,可以用正则表达式(regex) 提取.

如下例子,响应结果为 text/html 格式

config:
  name: 引用变量
  variables:
    username: test123

teststeps:
-
  name: blog
  request:
    method: GET
    url: https://www.xxxxxx.com/
  extract:
    title: "<title>(.*)</title>"
  validate:
    - eq: [status_code, 200]
    - eq: ["${title}", 200]

相对于httprunner3.x 版本,新增了正则表达式提取结果,这点弥补了3.x 版本取值上的缺陷

3、validate 校验结果

使用jmespath提取 JSON 响应正文(text/html 格式用正则表达式提取)并使用预期值进行验证。

提取结果:jmespath 表达式或正则表达式提取,更多细节参考JMESPath 教程
预期值:这里也可以使用指定的预期值、变量或函数引用

例子:

config:
  name: 校验结果

teststeps:
-
  name: post
  variables:
    username: test456
  request:
    method: POST
    url: http://httpbin.org/post
    json:
      username: ${
    
    username}
      password: "123456"
  validate:
    - eq: [status_code, 200]
    - eq: [body.url, "http://httpbin.org/post"]
    - eq: [body.origin, "183.193.27.78"]
    - eq: [headers."Content-Type", "application/json"]

C1

validate 也可以支持引用提取的结果

config:
  name: 校验结果

teststeps:
-
  name: post
  variables:
    username: test456
  request:
    method: POST
    url: http://httpbin.org/post
    json:
      username: ${
    
    username}
      password: "123456"
  extract:
    url: body.url
    origin: body.origin
    type: headers."Content-Type"
  validate:
    - eq: [status_code, 200]
    - eq: ["${url}", "http://httpbin.org/post"]
    - eq: ["${origin}", "183.193.27.78"]
    - eq: ["${type}", "application/json"]

C2

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

只要心怀梦想,勇敢追逐,努力拼搏,就能让每一天都充满希望与可能。不要停下脚步,坚持向前,那里才是成功的起点。相信自己,你可以创造出属于自己的奇迹!

只有坚持不懈的努力,才能践行梦想的翅膀;只有奋斗不息的勇气,才能超越自我,创造辉煌的人生。不要畏惧困难,向前迈进吧,你就是无敌的奇迹!

只有不断磨砺自己,才能看到更广阔的天空;只有奋斗不息,方能实现自己的梦想;唯有坚持不懈,才能创造属于自己的辉煌。相信自己,勇往直前,无所不能!

猜你喜欢

转载自blog.csdn.net/x2waiwai/article/details/131556948