【问题标题】:Using Java Request Sampler inside a ForEach controller in Jmeter在 Jmeter 的 ForEach 控制器中使用 Java Request Sampler
【发布时间】:2013-08-26 12:20:42
【问题描述】:

我正在尝试在 ForEach 控制器中使用 Java 请求采样器

这是我的自定义采样器

public class ClientSampler extends AbstractJavaSamplerClient {

    String Name;

    @Override
    public Arguments getDefaultParameters() {
        Arguments defaultParameters = new Arguments();
        defaultParameters.addArgument("name", "Tarek");
        return defaultParameters;
    }

    @Override
    public void setupTest(JavaSamplerContext context) {
        Name = context.getParameter("name");
    }

    @Override
    public SampleResult runTest(JavaSamplerContext context) {   
        System.out.println(Name);
    }
}

在 Jmeter 中,我用 5 个变量创建了用户定义的变量

还有一个 ForEach 控制器

然后将 java 请求作为 child 添加到 ForEach 控制器:

测试计划如下:

当我开始测试时,输出是:

first
first
first
first
first

预期:

first
second
third
fourth
fifth

即使我在 ForEach 控制器中设置了 开始和结束索引,结果也是一样的。

在 ForEach 控制器中使用 http 采样器效果很好,但使用 Java 请求时,结果与预期不符。

谁能解释为什么我会得到这个输出?

【问题讨论】:

    标签: foreach jmeter


    【解决方案1】:

    我解决了。

    问题是因为我误解了它的工作原理:

    Jmeter 在测试开始前调用SetupTest(JavaSamplerContext context) 一次,并在每个循环中调用runTest(JavaSamplerContext context)(我虽然它也在每个循环开始时调用 SetupTest)。

    所以我刚刚添加了

    Name = context.getParameter("name");
    

    在 runTest 中,现在的结果正是它应该的样子。

    @Override
    public SampleResult runTest(JavaSamplerContext context) {   
        Name = context.getParameter("name");        
        System.out.println(Name);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-24
      • 2014-02-16
      • 2016-12-24
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多