超详细!Jmeter性能测试(二)

2023-11-19

*Jmeter 性能测试(二)关联

正则表达式提取器和JSON Extractor提取器

接入上篇博文继续
上篇地址:https://blog.csdn.net/weixin_44954642/article/details/103054387

  • 上篇我们是把下单获取Token的接口给调通了,那么我们这篇继续讲到用token去完成下单支付。
  • 接下来直接看代码(这块代码就很简单了)看下图:在这里插入图片描述
  • 这个我稍微来解释一下
  • 看到第102行代码,直接写的是 string dmPayUrl = “http://172.16.*************”;这个意思就是动码支付接口的URL等于http://172.16*****************
  • 然后看到第103行,又写了个dmPayUrl += "?token=" + token + "&payTool=WECHAT_GZH";这个意思就是在URL后面又加上了"?token=" + token + “&payTool=WECHAT_GZH”,这是什么意思呢?就是在原始的URL后面加上这几个参数就好了,其中包含了token,这个token我们就把上个下单接口返回的Token填入进去就好了。
  • 这个时候,发现没有,我们要取上个接口返回的Token,竟然这样的话,我们就要用到正则了。
  • 来,继续返回到上个接口,添加一个正则表达式提取器
    在这里插入图片描述
  • 然后我们先去发送一个请求,看返回的格式是什么样的.
    在这里插入图片描述
  • 这个token长得有点奇怪啊,它不是一个单独的字符串,而是夹在中间,我复制出来吧
 "returnUrl":"http://dfq***.cn/jup.html?token=tk1194897560727445504&alipayAppId=2019061065525104&appId=wx00aefb43180bce2c"
  • 这个的话,要怎么去获取呢? 因为是夹在中间所以我们不能直接整个字符串的去取,如果取整个字符串的话
    “returnUrl”:"(.*?)"这样写就可以了,但是这个是获取全部的啊,我们只要是Token那一部分。
    由于Token是夹在中间,所以我们可以用捕捉的方式来获取,至于正则的写法我就不一一讲了,可以自行百度正则表达式语法问题,下面附图

在这里插入图片描述

  • 第一个引用名称:它的意思就是给获取的数值取一个变量名,那么获取成功后就可以拿这个去调用了,取什么样的值,调用的时候就输入什么。
  • 第二个正则表达式:token=(.+?)(?=(&)) 这是什么意思呢
    我们先把获取的数值拿下来吧,方便看
 "returnUrl":"http://dfq***.cn/jup.html?token=tk1194897560727445504&alipayAppId=2019061065525104&appId=wx00aefb43180bce2c"

我们只需要token那一部分,所以正则表达式先写上token= 为什么要这样写,因为我们要告诉jmeter我们要取token=开头的部分,但是从token=开头到最后面还有很多参数是不是,但是有没有注意到token=tk1194897560727445504&alipayAppId,&alipayAppId这个是拿&隔开了,我们只需要取token=到&的中间部分,所以加上(?=(&)),为什么这样加呢,你们知道吗?我们先来看下语法
* ():括起来的部分就是要提取的,就是我们要的部分。
* .:匹配任何字符串。
* +:0次或多次。
* ?:不要太贪婪,在找到第一个匹配项后停止。
* 也就是说token=(.+?)到了这一步确实是取到了我们需要的值,但是回过头来看上面,上面说了这个问号?是找到第一个匹配项后停止,但是它们是在一个字符串里面的,所以它会取到Token=后面的字符串里的所有数值,但是后面的数值包含了我们不需要的值,所以不行,这个时候我们用一个抓取的方式(?=(&)),这个是什么意思呢? 就是说它取到token=后面的值,但是当它读取到这个&符号后就不取了,就停了,它就明白这个意思了,就好像是看到这个符号,他就不会继续去获取了,它就懂你的意思了,所以就停止了,所以它取到的就是token=到&中间的值。

  • 第三个 模板:用 $ 引用起来,$1 $引用起来,如果在正则表达式中有多个正则表达式,则可以是$2 $,$3 $ 等等,表示解析到的第几个值给title。如:$ 1$表示解析到的第1个值,$2 $就表示解析到第二个值。

  • 第四个匹配数字:0代表随机取值,1代表全部取值,通常情况下填0,不填问题也不大。

  • 第五个缺省值:如果参数没有取得到值,那默认给一个值让它取,我填的Error。

  • 这个时候我们就可以去看看我们写的正则到底取到没有,这个的话要怎么看呢?看下方

  • 我们来创建一个Debug Sampler
    在这里插入图片描述

    • 这是什么意思呢?就是可以抓取所有请求中的参数的值,这样的话我们就可以看到正则到底有没有抓取到,然后在它的下面添加一个查看结果树。
      在这里插入图片描述
      很明显我们是取到了,因为我在正则表达式提取器给它起了个变量名为token,所以这里就直接显示token=***,但是对不对呢?我们打开获取token下单请求下的结果树来核对一下。
      在这里插入图片描述
      看,是一样的吧,说明我们获取到了。好,我们继续下一步。
      这样的话,我们可以开始创建支付接口了,直接把Token加上去就可以运行了,返回到最开始,继续看代码
      在这里插入图片描述
  • 我们先添加一个HTTP请求,然后把接口的URL和后面加上的参数都填上去,因为我们已经把上个接口的Token给获取到了,所以我们直接去引用就好了,上面也说了怎么去引用,直接${token}就好了,括号里输入引用的名称,因为我们在正则那里给获取的值取了个变量名叫token,所以,把名字输入进去就可以引用了。

    在这里插入图片描述

  • 然后再添加一个查看结果树,再改个名字吧,取个支付吧,我们运行试一下。
    在这里插入图片描述

  • 看,是不是成功了呀。这样的话,我们就跑完了哟,后面还有个接口,我就不讲了,整个流程都是一样的,这里我再来讲一个关联方法:JSON Extractor提取器

JSON Extractor提取器

  • 这个提取器呢,只是针对于返回格式是JSON格式的才可以用,当数据返回的是一个JSON格式,我们就可以用JSON Extractor提取器来获取啦,我们来举个例子,看图
    在这里插入图片描述

  • 其实我们上个返回的响应数据就是JSON格式的,我们同样也可以用JSON Extractor提取器来获取。
    我们在支付这个接口的下面创建一个JSON Extractor
    在这里插入图片描述

  • 然后我们打开支付接口的结果树,我们选一个参数来获取,就选这个agentNo
    在这里插入图片描述

  • 然后打开JSON Extractor提取器,请看
    在这里插入图片描述
    Variable names 就是给获取到的值取个变量名,然后去调用的,和上面的正则表达式一样的意思。
    JSON Path expressions 这个就是输入我们要去抓取的内容,我输入的是$.data.agentNo 为什么要这样输入呢?首先,先用 $ (dollar)符号引用,后面有个点 . 发现没有,这个点的意思呢就是下一阶层的意思,我来截个图吧,好解释一点。
    在这里插入图片描述
    Match No.(0 for Random) 这个不要去管它
    Default Values 这个就是默认值,如果参数没有取得到值,那默认给一个值让它取,我填的error。

  • 我们去验证一下吧,在Debug Sampler 里就可以看到,如果取到了的话agentNo就是COO1,如果没取到就是显示的默认值error。
    在这里插入图片描述

  • 看上图,是不是取到了,需要的话,直接调用就好了,调用的方式还是一样的 ${} ,括号里输入变量名。

  • 我们再来取一个错误的吧
    在这里插入图片描述

  • 继续看debug sampler 里的结果树
    在这里插入图片描述

  • 因为我上面故意输错了,所以它没取到,显示的就是默认值。

  • 好了,这篇文章就先写到这里,接口全部调通了,下一篇我们就讲怎么去做压测。

  • 若有不懂的,可以评论留言给我,要是有说的不对的,也可以反馈给我哟!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

超详细!Jmeter性能测试(二) 的相关文章

  • 如何在 Jmeter BeanShell 中循环 HTTP 请求并每次更新变量

    我有 2 个 HTTP 请求 一个用于从 api 获取数据 另一个用于将数据 POST 到 api GET 请求以 JSON 形式带来多个用户 POST 请求需要每个用户 1 个请求 因此我需要 根据用户数量多次循环相同的 POST 请求
  • Jmeter 性能-阶梯负载最终请求数

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 在 jMeter 的值字段中使用变量

    我添加了一个用户定义变量元素 然后创建一个值为 123456 的变量 Parameter 并将其传递到 GET 请求中 创建了第二个变量 Response 其值为 无效代码 123456 我添加了一个响应断言元素 将 Response 变量
  • 循环访问多个正则表达式提取器输出

    您能告诉我如何循环遍历返回多个值的正则表达式后处理器的结果吗 Example JSON 响应消息 reply code 111 status SUCCESS customerID 222 a b 333 44 4 s 555 666 777
  • 使用 XPATH 子字符串函数

    我需要帮助弄清楚这个 XPATH 子字符串函数 但我无法使用它 我尝试过这种方法的各种变体 a contains text Home href substring jsessionid 12 尝试从此标签获取 jsessionid 值 a
  • 使用Jmeter调用API时如何传递表单数据?

    我想使用 Jmeter 进行 API 调用 在我的 API 调用中 我发送一个带有请求的文件 我需要将文件名指定为表单数据 e g when I call the same API from postman 当我从 Jmeter 进行上述调
  • Jmeter JSR223 Sampler - 无法将数据写入 CSV 文件

    我正在使用 Jmeter v4 0 r1823414 根据这个答案 https stackoverflow com questions 50820389 unable to set incremental variable in jmete
  • 增加 JMeter 执行期间的线程数

    我有一个性能测试JMeter并想用它来测试最大系统性能 吞吐量 因此 当错误率低于 2 时 应增加活动线程数 我发现Constant Throughput Timer 把它放入Thread Group但它只会暂停或减慢线程 我尝试将其定义如
  • JMeter 在性能测试期间挂起

    我试图模拟 4 个不同用户的 100 个线程请求 所有 97 个请求均已发送和接收 但其余 3 个请求仍显示为正在执行 我必须手动停止 Jmeter 然后只传递剩余的请求 为什么会发生这种情况 您的计算机可能没有资源来执行请求 或者 Jav
  • 如何在 Groovy 2.4 中计算 sha256 哈希值

    我正在尝试计算 Groovy 版本 2 4 16 中的 sha256 哈希值 这是 jmeter 测试的一部分 这是它支持的 Groovy 版本 我认为我无法更改它 我知道在 Groovy 2 5 中你可以使用这样的代码 https mrh
  • Apache JMeter 的 Cookie 管理器未将 cookie 添加到 POST 请求

    我制定了非常简单的测试计划 登录 POST 返回会话cookie 获取状态 GET 返回用户状态 创建资源 POST 为资源提供 JSON 正文 所以我的 测试计划 如下所示 Test Plan Thread Group HTTP 请求默认
  • 暂停和恢复 jmeter 执行

    我正在寻找暂停和恢复 JMeter 执行 单 多线程 的选项 1 Pausing and Resuming through command line 2 From the Jmeter UI 3 By coding in some lang
  • jmeter-如何获取当前日期和时间(以秒为单位)

    我想计算当前时间 以秒为单位 并将其用作我的 jmeter 测试计划中的参数 默认情况下 时间以毫秒为单位 有人可以帮我吗 您可以使用 time 函数 http jmeter apache org usermanual functions
  • 在jmeter中设置整个请求url

    我有一个请求 它提供上传网址作为响应正文 uploadUrl https test com 9000 sample uploadurl I m able to extract the uploadUrl using JSON extract
  • 与 Jenkins 一起在 JMeter 中响应断言 - 从不显示失败

    寻找一点指导 我有一个基本的 JMeter 测试计划设置来加载页面 我添加了几个断言来检查屏幕上的文本是否显示 对这些使用了响应断言 我使用 JMeter GUI 运行了该计划 并故意导致断言失败 错误率为 15 所以这很好 然后 我尝试使
  • 是否可以将 jmeter 变量包含在从 CSV 获取的值中?

    我有一个 csv 文件 其中包含名为 query 的列 我要查询的全部内容之一是 user id list list 我想要做的是让 jMeter 在将查询传递到 HTTP Sampler 时覆盖查询中的 list 和 id 变量 其中变量
  • 使 .jmx 文件在 Windows 10 上使用 jmeter GUI 默认打开(双击文件)

    当我双击它时 我试图让我的 Windows 10 使用 jmeter GUI 打开 jmx 文件 我使用 apache jmeter 3 2 目前 为了打开 jmx 文件 我打开 jmeter jar apache jmeter 3 2 b
  • 使用jmeter测试多个网站

    如何使用jmeter测试100个不同的网站 来自DMOZ 我认为可以通过将jmeter与脚本集成来完成 基本上 该脚本是告诉 jmeter 从文本或 csv 文件中读取 URL 并将 http 请求采样器更改为文件中的 URL 以运行测试
  • Jmeter动态生成请求的json负载

    我有一个 Jmeter 测试计划 我希望 HttpSampler 发送发布请求 请求正文应包含 Json 如下所示 productIds p1 p2 我设置了一个随机变量生成器 每次调用都会返回格式正确的 ProductId 我想做的是通过
  • 如何使用脚本在 Jmeter 容器中设置变量及其值,例如用户参数

    我需要在 Jmeter 中设置和获取变量以实现 API 自动化 我正在使用 groovy 脚本来实现同样的目的 我可以使用以下代码将键值存储在属性文件中 props put shubhamKey shubhamValue 我不想使用 mai

随机推荐

  • 练习(二)——威斯康辛乳腺癌数据集

    该数据集来自南斯拉夫卢布尔雅那大学医疗中心肿瘤研究所 由M Zwitter 与 M Soklic 二者提供 感谢 该数据集可在UCI数据库中找到 该数据库是加州大学欧文分校提出的用于机器学习的数据库 是一个常用的标准测试数据集 该数据集有2
  • 无法解析的外部符号 “public: __cdecl nvinfer1::YoloPluginCreator::YoloPluginCreator

    无法解析的外部符号 public cdecl nvinfer1 YoloPluginCreator YoloPluginCreator 解决方法1 不选择c 项目 而选择建一个nvidia runtime项目 自动就带有了 解决方法2 在V
  • vue项目中常见的 filter 过滤器总结

    使用方法 import Vue from vue 在双花括号中 message timeFilter message filterA filterB message fliterA arg1 arg2 在 v bind 简写 中 div d
  • IAR指定FLASH地址定义常量

    需求 IAP中 需要在HEX文件里增加版本号 软件 IAR8 3 notepad IAR代码格式 root前面是两个下划线 注意不要再 h文件里定义 防止多次编译 root const char HardwareDate 0x807F900
  • wedo2.0编程模块介绍_能量黑科技模块系列十:RFID魔块

    RFID魔块 RFID 此模块可以对套件配套的RFID卡或者空白RFID卡进行读写 用于权限验证的DIY制作 常规的公交卡 地铁卡是无法进行写入 但可以读取UID号 配套RFID卡内存为1K 有16个分区 每个分区有3个数据块可进行写入此模
  • Hexo搭建个人博客并免费部署

    文章目录 HEXO 一 GitLub关联SSH 二 初始化hexo 三 配置GitHub Pages 3 1 config yml Hexo配置文件 3 2 报错 因为在此系统上禁止运行脚本 四 配置主题 4 1 NexT主题 五 创建标签
  • REUSE_ALV_FIELDCATALOG_MERGE

    作用 根据程序中的数据内表结构 来自动生成FIELDCAT 内表 不用定义宏或者Form来一个个加入 会根据内表结构所参照的词典类型来自动完成如表标题字段名的生成 得到大概的FIELDCAT 后 可以再根据特殊情况再修改FIELDCAT 内
  • javaSE基础学习总结之开发团队调度软件练习

    java第一阶段学习总结 开发团队调度软件的实现 1 项目需求 2 项目MVC架构 3 创建com mvc team domian模块 4 创建com mvc team service模块 下面展示一些 内联代码片 5 创建com mvc
  • UI图片移动

    local x y 0 149 local run 0 local pi0 20 ui 图片2 右移动3 左移动4 ui 7266427303413860920 7266427303413860920 2 72664273034138609
  • 10个有用的Siebel标准功能

    作为第一篇blog 不想罗列一些Siebel的市场信息或者功能介绍等Overview 以下Siebel非常有用的10个小的tip 1 自定义数据显示格式 用户可以根据自己需要隐藏界面上的某些列 也可以通过拖放的方式控制列显示的顺序 2 自动
  • docker && Tugraph

    拉取tugraph镜像 docker pull tugraph tugraph db centos7 启动docker docker run d p 7070 7070 p 9090 9090 name tugraph demo tugra
  • Oracle Sequence Cache 参数说明

    之前整理的一篇文章 ORACLE SEQUENCE 介绍 http blog csdn net tianlesoftware archive 2009 10 30 4745039 aspx 之前整理的一篇文章 那是还是写blog初期的作品
  • nacos 的 cp 和 ap

    如果只有一个 nacos 节点 可以直接以单机模式启动 naming 功能是完全正常的 也可以以集群模式启动 配置文件中只配一个节点即可 但是 因为此时 nacos 的 raft 实现中 一个节点是选不了主的 所以 cp 模式的 raft
  • matlab绘制贝叶斯曲线,Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线

    原文链接 http tecdat cn p 15508 绘制ROC曲线通过Logistic回归进行分类 加载样本数据 load fisheriris通过使用与versicolor和virginica物种相对应的度量来定义二元分类问题 pre
  • java 布尔类型_Java布尔类型

    Java布尔类型 在Java语言中布尔类型的值只包括true和false 没有其他值 不包括1和0 布尔类型的数据在开发中主要使用在逻辑判断方面 例如 如果外面在下雨 我出门带一把雨伞 如果明天休息 咱们就一起出去玩耍吧 请看一段程序 以下
  • 文件包含漏洞及绕过方法(以php为例)

    一 文件包含漏洞的由来 简单的来说 为了减少 重复造轮子 引入了文件包含函数 可以直接使用文件中的文件和代码 当通过动态获文件时 或者需要引用网络上其他文件时 用户通过对变量值的修改访问规定的文件 但是未对变量值进行校验 导致有了可乘之机
  • 前端vue面试

    用户登陆产品了解生命周期vuex数据平台干嘛vue X怎么持久localstore和cokIE区别路由传惨路由传惨两种方式区别 1 谈一谈你对keep alive的了解P1 2 三 v if v show的区别 3 四 v if和v for
  • 服务器柜机位置摆放电子图,客厅柜机摆放—客厅柜机空调摆放方法介绍

    客厅是一家人在一起活动最多的房间 所以家具及家电等产品的摆放就要有一定的讲究了 其中柜机空调的摆放方法尤其为消费者所关注 下面 小编就详细的向您介绍一下客厅柜机摆放的方法 有兴趣的朋友一起来了解一下吧 客厅柜机摆放 客厅柜机摆放 正确摆放位
  • VectorCAST软件下载安装使用试用培训购买

    商业软件如需下载安装使用试用 可以通过下面添加 提供编译器定制 技术支持 培训 wanglequshuijiao 有需要可以加详细聊 vx 静态测试软件 QAC Klocwork Coverity等 单元测试软件 集成测试软件 Vector
  • 超详细!Jmeter性能测试(二)

    Jmeter 性能测试 二 关联 正则表达式提取器和JSON Extractor提取器 接入上篇博文继续 上篇地址 https blog csdn net weixin 44954642 article details 103054387