首页 > 解决方案 > 如何在 JMeter 中获取线程和采样器名称

问题描述

我想在 JMeter 测试计划中获取线程和采样器名称并将其保存在变量中。

我已经使用 BeanShell 后处理器保留了测试计划名称:

导入 org.apache.jmeter.services.FileServer;

字符串 testPlanName = FileServer.getFileServer().getScriptName(); vars.put("testPlanName", testPlanName)

我在电子邮件通知中使用它来发送消息,例如“测试计划 ${testPlanName} 已收到响应代码 ${responseCode}

但我想以相同的方式包含线程名称和采样器名称。

我已经尝试添加 BeanShell 后处理器 .getThreadname() 和 .getSampleName() 并导入 import org.apache.jmeter.samplers.SampleResult; 但它不起作用。

我怎样才能得到这些名字并像变量一样使用它?

标签: variablesjmeterbeanshell

解决方案


共有三个函数,您可以在 BeanShell 中使用它们:

  1. __samplerName()

    samplerName函数返回当前采样器的名称(即标签)。该功能在没有关联采样器的测试元素中不起作用。例如测试计划。配置元素也没有关联的采样器。然而,一些配置元素被采样器直接引用,例如 HTTP Header Manager 和 Http Cookie Manager,在这种情况下,函数在 Http Sampler 的上下文中解析。预处理器、后处理器和断言总是有一个关联的采样器。

    例子:${__samplerName()}

  2. __TestPlanName()

    TestPlanName 函数返回当前测试计划的名称(可以在 Include Plans 中使用以知道调用测试计划的名称)。

    例子:${__TestPlanName}

    请注意,__TestPlanName 将返回测试计划的文件名,它可以与测试计划名称不同。

  3. __threadGroupName()

    线程组名称函数只返回正在执行的线程组的名称。

    例子:${__threadGroupName}

有关使用的完整详细信息BeanShell,请参阅:


推荐阅读