微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据匹配计数值,需要将以下值捕获到变量中

如何解决根据匹配计数值,需要将以下值捕获到变量中

我有一个要求,例如基于匹配计数值,需要将以下值捕获到变量中并将其传递给下一个请求。

<v13:uniqueTaskIdentifier><v13:taskIdentifier>${Task}</v13:taskIdentifier>

假设我在“${Task_matchNr}”中有 3 个值,我的输出应该如下所示:

<v13:uniqueTaskIdentifier><v13:taskIdentifier>**Task123**</v13:taskIdentifier><v13:uniqueTaskIdentifier><v13:taskIdentifier>**Task1234**</v13:taskIdentifier><v13:uniqueTaskIdentifier><v13:taskIdentifier>**Task1235**</v13:taskIdentifier>

我使用 JSR223 采样器:

def resultCount = ${Task_matchNr} as int
def ABC = "";
for(i=1;i<=resultCount;i++)
{
    def var_name="Task_"+i
    ABC = vars.get(var_name)
    def result = '<v13:uniqueTaskIdentifier><v13:taskIdentifier>(vars.get(ABC))</v13:taskIdentifier>'
    log.info(result);
}

但它正在捕捉

<v13:uniqueTaskIdentifier><v13:taskIdentifier>(vars.get(ABC))</v13:taskIdentifier>

解决方法

您需要连接值:

def result = '<v13:uniqueTaskIdentifier><v13:taskIdentifier>' + ABC  + '</v13:taskIdentifier>'
,
  1. Don't reference JMeter Functions or Variables in Groovy code as ${Task_matchNr} 作为值将被缓存并用于后续迭代
  2. 您需要使用 string concatenation,因为您当前的方法将始终返回硬编码值

你需要修改你的代码如下:

def resultCount = vars.get('Task_matchNr') as int
def ABC = "";
for (i = 1; i <= resultCount; i++) {
    def var_name = "Task_" + i
    ABC = vars.get(var_name)
    def result = '<v13:uniqueTaskIdentifier><v13:taskIdentifier>' + ABC + '< /v13:taskIdentifier>'
    log.info(result);
}

更多信息:Apache Groovy - Why and How You Should Use It

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。