jmeter 在多个请求中使用相同的正则表达式

vawmfj5a  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(91)

我有一个场景,其中正则表达式将应用于多个请求(不是所有请求)。
举例来说:

  1. Request-1生成一个token-id。
    1.这需要用表达式connectionToken”:“(.+?)"来提取。
    1.在接下来的2个后续请求中使用此变量。
    1.第三个请求生成另一个token-id。
    1.这也需要使用相同的表达式。
    1.在接下来的两个请求中使用这个。
    1.类似地,第五个请求生成一个token-id,依此类推。
    有没有一种方法可以用一个正则表达式提取器来优化它?
    注意:将提取器放置在线程组级别似乎不是一个有效的选择。
    我想使用一个正则表达式提取器。这个提取器必须在适当的请求中应用正则表达式。相应地,在后续的请求中需要使用变量。
eoxn13cs

eoxn13cs1#

JMeter后处理器遵守JMeter范围规则,即每个正则表达式提取器将在其范围内的每个采样器之后执行。
如果第二个请求没有返回connectionToken,则变量将为空或默认值,第三个请求将失败。
最简单的解决方案就是复制并粘贴正则表达式提取器。
如果不想复制代码,可以切换到JSR223后处理器并有条件地提取令牌,例如,根据Sampler的标签或响应中是否存在connectionToken
例如:

def response = prev.getResponseDataAsString()

if (response.contains('connectionToken')) {
    def token = (response =~ 'connectionToken":"(.+?)"')[0][1]
    vars.put('token', token)
}

字符串
请参阅Top 8 JMeter Java Classes You Should Be Using with Groovy文章了解更多关于prevvars的含义,并参阅Find Operator Groovy文档中有关提取文本方法的章节。

相关问题