如何在jmeter中运行多个if控制器

时间:2018-11-30 03:01:31

标签: jmeter

我目前正在进行重负载测试,我有一个登录请求,该登录请求可以使用用户名和密码以及基本身份验证进行访问,我必须从响应中验证一些信息,并且我正在使用断言,但是我需要使用其他类型的声明断言取决于代码响应,并且为了能够做到这一点,我正在使用if控件将断言作为子项放入内部,当我尝试执行带有错误代码响应的断言时,问题就开始了,某些if控制器不是取我创建的用于存储代码响应的变量的值。有人可以帮我吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您不能将断言作为If控制器的直接子代。实际上,您可以这样做,但是断言遵循JMeter Scoping Rules并没有任何意义,并且由于Assertion范围内没有任何Sampler,因此它将不会被执行。

我建议您使用JSR223 AssertionGroovy SDK的所有功能,以便设置自定义通过/失败标准。伪代码将类似于:

if (SampleResult.getResponseCode().equals('200')) {
    //do what you need when response code is 200
    //for example let's check if response contains "foo" line
    if (!SampleResult.getResponseDataAsString().contains('foo')) {
        AssertionResult.setFailure(true)
        AssertionResult.setFailureMessage('Failed to find "foo" line in the response')
    }
}
else if (SampleResult.getResponseCode().equals('300')) {
    //do what you need when response code is 300
}
else if (SampleResult.getResponseCode().equals('400')){
    //do what you need when response code is 400
}
else {
    AssertionResult.setFailure(true)
    AssertionResult.setFailureMessage('Unexpected response code: ' + SampleResult.getResponseCode())
}

参考文献: