如何在JMeter中获取线程和采样器名称

时间:2019-01-30 14:14:14

标签: variables jmeter beanshell

我想在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;但这不起作用。

如何获取该名称并将其用作变量?

2 个答案:

答案 0 :(得分:2)

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

  1. __samplerName()

      

    samplerName函数返回当前采样器的名称(即标签)。   该功能不适用于没有关联采样器的Test元素。例如测试计划。配置元素也没有关联的采样器。但是,某些配置元素是由采样器直接引用的,例如HTTP Header Manager和Http Cookie Manager,在这种情况下,这些功能是在Http Sampler的上下文中解析的。预处理器,后处理器和断言始终具有关联的采样器。

    示例:${__samplerName()}

  2. __TestPlanName()

      

    TestPlanName函数返回当前测试计划的名称(可在“包括计划”中使用以了解调用测试计划的名称)。

    示例:${__TestPlanName}

    请注意,__ TestPlanName将返回测试计划的文件名,该名称可能与测试计划名称不同。

  3. __threadGroupName()

      

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

    示例:${__threadGroupName}

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

答案 1 :(得分:0)

您可以使用BeanShell将线程和采样器名称保存为参数:

String _threadGroup = ctx.getThreadGroup().getName();

String _sampleName=ctx.getCurrentSampler().getName();

String _sampleLabel = SampleResult.getSampleLabel();