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

问题描述 投票:0回答:1

我有一个场景,正则表达式要应用于多个请求(不是全部)。

例如:

  1. Request-1 生成一个 token-id。
  2. 这需要用一个表达式来提取,比如connectionToken":"(.+?)"。
  3. 在接下来的 2 个后续请求中使用此变量。
  4. 第三个请求生成另一个 token-id。
  5. 这也需要使用相同的表达式。
  6. 在接下来的两个请求中使用它。
  7. 同样,第五个请求生成 token-id 等等...

有没有办法用单个正则表达式提取器来优化它?

注意:将提取器放置在线程组级别似乎不是一个有效的选择。

我想使用单个正则表达式提取器。该提取器必须根据适当的请求应用正则表达式。因此,需要在后续请求中使用变量。

jmeter performance-testing
1个回答
0
投票

JMeter 后处理器遵守 JMeter 范围规则,即每个正则表达式提取器将在每个采样器进入其范围后执行。

如果第二个请求不返回连接令牌 - 该变量将具有空值或默认值,并且第三个请求将失败。

最简单的解决方案就是复制并粘贴正则表达式提取器。

如果您不想重复代码,可以切换到 JSR223 PostProcessor 并有条件地提取令牌,例如根据 Sampler 的标签或响应中是否存在

connectionToken

类似:

def response = prev.getResponseDataAsString()

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

请参阅 您应该与 Groovy 一起使用的前 8 个 JMeter Java 类 文章,了解有关这些

prev
vars
人的意思的更多信息,以及关于提取文本方法的 Find Operator Groovy 文档章节。

© www.soinside.com 2019 - 2024. All rights reserved.