首页 > 其他分享 >使用JMeter从JSON响应的URL参数中提取特定值

使用JMeter从JSON响应的URL参数中提取特定值

时间:2024-03-21 19:01:22浏览次数:15  
标签:提取 URL 正则表达式 JSON href rowId JMeter

在使用Apache JMeter进行API测试时,我们经常需要从JSON格式的响应中提取特定字段的值。这可以通过使用JMeter内置的JSON提取器和正则表达式提取器来完成。以下是一个具体的例子,展示了如何从一个JSON响应中提取rowId的值,同时处理字符串终止符。

假设我们有以下JSON响应:

{
  "flag": "success",
  "formulaStatus": -1,
  "encryption": "0",
  "changestate": 1,
  "href": "/pf/ovdf/bd/openPage?pr=od&ll=115dfc704f96b039825a66f15b04&rowId=D96DB6B24EEE412BB0DE7E728EE193E6",
  "closer": false
}

我们的目标是提取rowId参数的值D96DB6B24EEE412BB0DE7E728EE193E6。这个值不是直接作为JSON对象的一个属性呈现的,而是作为一个URL的一部分,嵌套在href字段中。因此,我们需要两步来提取这个值。

步骤 1: 提取href字段

首先,我们使用JSON提取器来捕获href字段的值。JSON提取器可以直接从JSON结构中提取值。我们可以按照以下步骤配置JSON提取器:

  1. 添加JSON提取器到请求:在JMeter中,选择HTTP请求组件,然后右键选择“添加” -> “后置处理器” -> “JSON提取器”。
  2. 配置JSON提取器:在JSON提取器的配置界面中,设置以下参数:
    • 变量名称extractedHref
    • JSON路径表达式$.href
    • 默认值NOT_FOUND

这样配置后,如果JSON响应格式正确,extractedHref变量将包含href字段的完整URL字符串。

步骤 2: 从URL中提取rowId

接下来,我们需要从extractedHref变量中提取rowId的值。我们可以使用正则表达式提取器来完成这个任务:

  1. 添加正则表达式提取器:在JSON提取器下面,右键选择“添加” -> “后置处理器” -> “正则表达式提取器”。
  2. 配置正则表达式提取器:在正则表达式提取器的配置界面中,设置以下参数:
    • 应用到变量extractedHref
    • 正则表达式rowId=([^&"]+)
    • 模板$1$
    • 匹配编号1
    • 默认值NOT_FOUND

在这个正则表达式中,rowId=([^&"]+)的意思是查找rowId=之后的任何字符序列,直到遇到&"或字符串结束。圆括号()表示捕获组,用于提取匹配的部分。这样修改后,正则表达式将在遇到引号"时停止匹配,这可以防止提取到额外的字符,如在JSON响应中紧跟rowId值后的引号和其他字段。

结论

通过以上步骤,我们可以有效地从JSON响应中提取rowId的值。这种方法不仅适用于本例,也可以广泛应用于需要从嵌套信息中提取数据的场景。JMeter的强大功能使得它成为API测试和数据提取的强有力工具。

标签:提取,URL,正则表达式,JSON,href,rowId,JMeter
From: https://www.cnblogs.com/n00dle/p/18087760

相关文章

  • requests.post传的data如果是直接使用python dict封装,有些服务端接收不了这种数据类型
    平时在自己的php项目里,使用dict方式组装data,然后requests.post,一点问题都没有。但是调了后端一个java的微服务接口,结果就一直报错422: 最后问了一下开发,得到提示“python好像还有个毛病,python的json对象转字符串的时候,转出来的字符串不是标准json字符串,还要做个字符串处理,变成......
  • Jmeter测试计划
    测试计划可以将测试计划可视化为用于运行测试的JMeter脚本。测试计划由测试元素组成,例如线程组,逻辑控制器,样本生成控制器,监听器,定时器,断言和配置元素。每个测试计划中至少应有一个线程组。我们可以根据要求添加或删除元素。前言中的快速开始就是一个测试计划。测试计划控制面......
  • Jmeter的元件作用域和执行顺序
    一、元件的基本介绍元件:多个类似功能组件的容器(类似于类) 取样器 逻辑控制器 前置处理器 后置处理器 断言 定时器 测试片段 配置元件 监听器 组件:实现独立的某个功能(类似于方法)2、元件作用域在JMeter中,元件的作用域是靠测试计划的树形结构中元件的父子关......
  • 2、URL和视图的映射
    fromflaskimportFlask,requestapp=Flask(__name__)#url的组成部分:http[80]/https[443]://www.qq.com:443/path#默认的http协议使用的是80端口,https协议使用的是443端口.#当我们输入www.qq.com时,实际浏览器会处理加上443端口#url与视图:path与视图@app.route("/")d......
  • Newtonsoft.Json/Json.NET忽略序列化时的意外错误
    在.NET中Newtonsoft.Json(Json.NET)是我们常用来进行Json序列化与反序列化的库。而在使用中常会遇到反序列化Json时,遇到不规则的Json数据解构而抛出异常。Newtonsoft.Json 支持序列化和反序列化过程中的错误处理。允许您捕获错误并选择是处理它并继续序列化,还是让错误冒泡并抛......
  • Jmeter Beanshell编辑器配置使用
    1、背景考虑到jmeter在编写groovy及beanshell脚本时,编辑器工具没有命令行提示的功能,因此特写本文章,配置IDE工具。2、使用工具说明开发编辑器IntelliJIDEA2022.3.1Jmeter5.6.33、配置步骤3.1下载jmeter源码https://jmeter.apache.org/download_jmeter.cgi3.2build......
  • 常用命令--curl
    常用命令--curlcurl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符......
  • JWT(JSON WEB TOKEN)是玩具吗
    JWT当然不是玩具,理解其设计意图,和适用场景自然会发现存在的就是有价值的JWT:JSONWebToken起源和定义JWT(JSONWebToken)是由IETF(InternetEngineeringTaskForce)基于RFC7519规范定义的。它是一种用于在网络应用间传递信息的标准方法。JWT最初由无状态的分布式应用场......
  • python requests.post Max retries exceeded with url 报错
    python requests.post  Maxretriesexceededwithurl 报错 importrequestsfromrequests.adaptersimportHTTPAdapterfromrequests.packages.urllib3.util.retryimportRetrysession=requests.Session()retries=Retry(total=5,backoff_factor=0.1,st......
  • URLDNS反序列化利用
    这是java的原生利用链,通常用于反序列化的验证,因为是原生态不存在版本限制HashMap结合URL触发的DNS检查思路利用链HashMap-->readObject()HashMap-->hash()URL-->hashcode()URL-->getByName()进行域名解析的函数利用分析首先新建一个DnsTester类,new一个Hash......