【问题标题】:Jmeter how to simulate a failure based on results of a condition fro Post ProcessorJmeter如何根据后处理器条件的结果模拟故障
【发布时间】:2018-04-12 17:16:44
【问题描述】:

我有一种情况,我检查响应数据,如果存在特定变量,那么我喜欢模拟测试失败,即使 HTTP 请求代码为 200。例如在 Bean 后处理器中,我有:

if ( (prev.getResponseDataAsString().indexOf(Z2) >= 0) || (matches > 1) ){
    System.out.println(ctx.getCurrentSampler().getName() +" --> Failed ....")
}

我知道当我想将结果设置为成功时该怎么做 (prev.setResponseOK();) 如果我想将结果设置为失败,我该怎么做?所以GUI显示红色而不是绿色? 谢谢

【问题讨论】:

  • 嗨,通常在 stackoverflow 中,当答案有帮助时,它会被发布问题的用户接受和/或投票

标签: jmeter


【解决方案1】:

JSR223 Sampler

与 BeanShell 采样器不同,JSR223 采样器不通过脚本变量设置 ResponseCode、ResponseMessage 和示例状态。目前,改变这些的唯一方法是通过 SampleResult 方法:

SampleResult.setSuccessful(true/false)

prev 是一个 SampleResult 对象,因此您可以将其标记为失败:

prev.setSuccessful(false)

prev - (SampleResult) - 提供对前一个 SampleResult 的访问权限

【讨论】:

    【解决方案2】:

    听起来像是Response Assertion 的用例,您可以使用它根据响应数据中某些模式的存在/不存在有条件地设置样本的通过/失败标准。

    以下是由于响应中缺少预期数据而导致 HTTP 请求采样器失败并带有 200 状态代码的示例:

    有关详细信息,请参阅How to Use JMeter Assertions in Three Easy Steps


    关于JMeter Best Practices,顺便说一句,您使用 Beanshell PostProcessor 违反了:

    • 您应该尽可能使用内置的 JMeter 测试元素
    • 如果您必须编写脚本,请确保选择性能最高的选项 unfortunately not Beanshell

    【讨论】:

    • 在响应断言中我如何检查这个? if ( (prev.getResponseDataAsString().indexOf(Z2) >= 0) || (matches > 1) ) 在响应断言中,您只能检查特定字符串,而不是我的情况,我想看看我是否多次出现特定字符串,并且我想确保我没有其他字符串
    • 您可以使用 Perl-5 样式的正则表达式来处理“包含”和/或“匹配”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 2016-05-01
    • 2014-07-19
    • 1970-01-01
    • 2021-12-30
    • 2018-06-09
    相关资源
    最近更新 更多