Jmeter BeanShell 断言未通过测试

Jmeter BeanShell Assertion not failing the tests

我正在学习 Jmeter。

我有一个应该使测试失败的 BeanShell 断言(失败被硬编码到断言中)。但是所有的测试都通过了。我做错了什么?

我的理解是,如果 BSA 设置

Faliure = true;

断言失败。 但就我而言,它并没有失败。

请看:

您可以在屏幕截图上看到未实现的禁用的 XPath 断言,如果我启用它,它确实如我所料未通过测试。

更新:现在我明白了为什么它没有通过测试:失败有一个错字...然后问题:为什么它甚至 运行?这不是java吗?这不是一个未声明的变量吗?

谢谢!

你有 2 个错别字,正确的说法是:

Failure = true;
FailureMessage = "Here goes the failure message";

断言成功,因为从 Beanshell 的角度来看代码很好,在 Beanshell 中你不需要显式定义对象 class。只要它是有效代码——您的断言就是成功的。

这里有一些故障排除技巧:

  1. debug(); 添加为 Beanshell 脚本的第一行将触发调试输出到 stdout
  2. 通过在 try/catch block 中包围您的代码,例如:

    try {
        //your code here
    }
    catch (Throwable ex) {
        log.error("Failure", ex);
        throw ex;
    }
    

    您会将相关的堆栈跟踪打印到 jmeter.log 文件

有关在 JMeter 中使用 Beanshell 测试元素的全面信息,请参阅 How to Use BeanShell: JMeter's Favorite Built-in Component 文章