jmeter - 在JMeter中随机提取JSR223后处理器中的对应值
问题描述
大家好/Dimitri T 能否请您发表您对在一个代码块中随机提取相应值(例如 ItemID1 和 ItemSlot1)的宝贵想法。我能够在 Jsr223 后处理器代码下面编写它,它工作正常。但是当 ItemSlot id 中有空格时,它们就不会被提取。从下面的代码中,我在所需的正则表达式中的“匹配号”下传递了 ${rannum}。
注意:会有超过 100 个对应的值。在某些情况下,我们不会有 ItemSlot1。即服务器响应中出现空白/空值。因此,我的脚本没有选择相应的值。
应用服务器响应:
“viewSaleListingLink”:“https://Example.com/cars/item/search/-/listing/ItemID1/100011142”,“saleCountry”:“”,“saleNote”:“”,“bidLiveUrl”:“https:// /Example.com/cars//registration?p_p_id=RegistrationPortlet_WAR_PWRWeb&p_p_lifecycle=1&p_p_state=normal&ItemSlot1=103009468",
JSR223后处理器代码
导入 java.math.MathContext;导入 java.math.RoundingMode;
// 从之前的响应中读取出现值 def Max = Integer.parseInt( vars.get("ItemID1_matchNr"));
整数最小值=1;
int rannum = min + (int) (Math.random() * ((Max - min) + 1));
log.info("值 id="+rannum);
vars.put("rannum",rannum.toString());
解决方案
如果您需要使用正则表达式提取器从响应中提取随机匹配/一对匹配 - 只需提供0
“匹配号”就足够了,它会自动获取随机匹配组,因此您无需编写任何代码:
另请注意,后处理器按照它们出现的顺序(倒置)执行,因此:
- 如果您的 JSR223 PostProcessor 高于正则表达式提取器 -
ItemID1_matchNr
将未定义 - 如果您的 JSR223 PostProcessor 低于正则表达式提取器 - 您的
rannum
变量将没有任何值
此外,您的响应似乎是JSON,因此切换到更强大、更方便的JSON JMESPath Extractor是有意义的
推荐阅读
- javascript - 从文件系统创建对象树
- c++ - 如何返回在我的函数中创建的数组的 unique_ptr?
- html - 如何在不使用跨度的情况下让我的所有 h2 使用相同的类?我希望我所有的 h2 都使用 .fancy_underline 类
- c# - 如何将 X(:,J) 等 Fortran 子数组语法转换为 VB.NET 和 C#
- laravel - Supervisord & Laravel - has been attempted too many times or run too long
- python - 我的代码有什么问题?添加“不”后失败。采取的步骤'到代码中
- spring-boot - 如何将 Spring log4j 与 messages.properties 集成?
- selenium - Heroku 脚本托管
- ios - 使用 iCloud PHAsset 请求 AVAsset 返回一个没有 VideoTracks 的 AVAsset
- r - Windows 10 中 R 中的 TensorFlow 安装