JMeter的。为什么声明不起作用?

时间:2014-03-03 13:52:26

标签: jmeter

我对未能触发一个简单的IF语句而感到沮丧,并开始怀疑我不理解在JMeter中实现IF语句的方式。

我要做的是查询在处理请求时返回202响应的API,然后在返回结果时返回200。如果我在获得结果后再次查询,则返回404。

我有一个没有条件执行此查询的while控制器,它会在404上退出。

这似乎工作正常。

我想要做的是确认我为202和200返回了有效的JSON,但忽略了404。

我想我可以在循环中的每个查询之后添加一个IF控制器,以便在我有202或200时运行BSF断言,但我似乎无法让它工作。即使我输入“true”或“1 == 1”作为条件,断言也从未被调用。

"${httpCode}" == "200"

在我的断言中,我添加了故意错误“eval x;”如果我将它拖放到套件的其他部分,会导致断言失败 -

try {
   eval('var response = ' + prev.getResponseDataAsString());
   eval x;
} catch(e) {
      prev.setSuccessful(false);
      prev.setResponseMessage("Invalid response. Expected a valid JSON.");
}

就像我说的,即使我添加true或1 == 1断言错误也从未在断言结果中显示。我是否从根本上误解了IF控制器的工作方式?当然,与我合作的Java程序员看不出这里有什么问题。

不幸的是,这个网站不会让我发布套件的图片......

顺便说一句

很抱歉提出一个“含糊”的问题,但我一直在评估JMeter超过一周,并在“如何”类型教程中找到了缺少的在线资源。很多对特定JMeter对象的引用和基本的“入门”类型的帖子,但没有详细说明。此外,大多数参考文献似乎是循环的,并且过时了;我一直在同一页面上找回自己。

apache网站似乎更适合作为对象引用。

有人能推荐一个非常好的在线资源吗?

2 个答案:

答案 0 :(得分:0)

你有什么JMeter版本?在我的ver.2.10中,如果1 == 1的控制器正常工作。

我还建议您使用带 JMeterThread.last_sample_ok function的控制器。如果前一个采样器没问题,它返回true。 您可以使用in as条件。

答案 1 :(得分:0)

尝试以下方法:

$ {__ BeanShell的( “$ {httpCode}”。等于( “200”))}