【问题标题】:Extracting corresponding values in JSR223 post processor in JMeter Randomly在JMeter中随机提取JSR223后处理器中的对应值
【发布时间】:2021-03-01 22:17:27
【问题描述】:

大家好/Dimitri T 能否请您发表您对在一个代码块随机中提取相应值(例如 ItemID1 和 ItemSlot1)的宝贵想法。我能够在 Jsr223 后处理器代码下面编写它,它工作正常。但是当 ItemSlot id 中有空格时,它们就不会被提取。从下面的代码中,我在所需的正则表达式中的“匹配号”下传递了 ${rannum}。

注意:会有超过 100 个对应的值。在某些情况下,我们不会有 ItemSlot1。即服务器响应中出现空白/空值。因此,我的脚本没有选择相应的值。

应用服务器响应:

"viewSaleListingLink": "https://Example.com/cars/item/search/-/listing/ItemID1/100011142", "销售国": "", "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"));

int min=1;

int rannum = min + (int) (Math.random() * ((Max - min) + 1));

log.info("值 id ="+rannum);

vars.put("rannum",rannum.toString());

enter image description here

【问题讨论】:

    标签: jmeter beanshell


    【解决方案1】:

    如果您需要使用正则表达式提取器从响应中提取随机匹配/一对匹配 - 只需提供 0 作为“匹配号”就足够了,它会自动获取随机匹配组,因此您将不会不必编写任何代码:

    还要注意Post-Processors 是按照它们出现的顺序(倒置)执行的,所以:

    • 如果您的 JSR223 后处理器高于正则表达式提取器 - ItemID1_matchNr 将未定义
    • 如果您的 JSR223 后处理器低于正则表达式提取器 - 您的 rannum 变量将没有任何值

    您的回复似乎是JSON,因此切换到更强大、更方便的JSON JMESPath Extractor 是有意义的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多