jmeter - 在 JMeter 后处理器中保存匹配的值
问题描述
在刚开始使用 JMeter 时,我试图设置 taskId_1、taskId_2、taskId_3 形式的变量(在“用户定义的变量”中定义)并在 HTTP 示例(REST 请求)中使用它们。当我运行后处理器时,我的 JSON 提取器或正则表达式提取器都没有保存匹配的值(我使用 RegExp 测试器测试了提取的正则表达式。)
从我正在解析的 GET 请求发送的响应看起来像(为便于阅读而编辑):
{
"case-data": {
"Description": "100 parallel tasks",
"Workflow": {
"com.MyCompany": {
"workflow-case-id": null,
"stages": [
{
"stage-guid": "470D2E00-A9E1-11EB-887B-4226FC2CA371",
"tasks": [
{
"task-name": "Stage1Task1P",
"user-group-id": "Joe",
"task-id" : 52
},
{
"task-name": "Stage1Task2P",
"user-group-id": "Joe",
"task-id" : 73
},
{
"task-name": "Stage1Task3P",
"user-group-id": "Joe",
"task-id" : 123
}
]
} ] }}}}
按照 BlazeMeter 教程,对于我使用的正则表达式提取器
Apply To "Main sample and sub-samples"
Field to check "Response Message"
Name of created variable taskId
Regular expression task-id"\ :\ (.\d+)$
$1$
(我也尝试过 taskId_1 - 我理想的解决方案是一次设置所有 taskId)。
对于我刚刚尝试过的 JSON 提取器,我使用:
Names of created variables: taskId
JSON Path Expressions: $."task-id" (LOG ALL indicates Could not find JSON Path - so I will revise)
Match No: -1
Default Values: taskId not matched
就好像这些字符串都没有匹配过,所以没有设置值 - 甚至没有默认值。我还有一个调试示例、调试后处理器和一个包含在父逻辑控制器中的查看结果树 - 但看不到任何地方设置的变量值(即使在日志中)。
我有其他 JSON 提取器试图从顶部向下遍历对象树,但它们也没有设置我的用户变量,尽管 LOG ALL 表明它们正在设置同名的变量。
解决方案
-
"task-id"\s*:\s*(\d+)
更多信息:JMeter 正则表达式
-
$..task-id
更多信息:Jayway JsonPath
要查看生成的变量,只需在脚本底部的某处添加 Debug Sampler 并添加 View Results Tree 侦听器,以便 Debug Sampler 在其范围内,请参阅如何调试 Apache JMeter 脚本以获取更多详细信息。
推荐阅读
- php - 无法在 PHP 8 交互式 shell 中输入 unicode 字符
- javascript - node.js - 在 http 获取请求 (API) 中使用 .csv 文件中的值
- javascript - 基于 ScreenResize 的 Vanilla Javascript 文档编写
- javascript - 在历史记录上处理具有 2 个条件的登录。仅在反应 js 中推送第二个条件
- php - Woocommerce 在购物车中显示含税价格,在结账时不显示
- javascript - 拖放 img 并覆盖
- elasticsearch - Elasticsearch 创建新文档太慢
- linux - 多台主机上的 Rsync 并行
- android - 如何解决 Google Pixel 手机在 Google Play 中的“无法安装”问题?
- php - PHP,Laravel 8 后端