我对未能触发一个简单的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网站似乎更适合作为对象引用。
有人能推荐一个非常好的在线资源吗?
答案 0 :(得分:0)
你有什么JMeter版本?在我的ver.2.10中,如果1 == 1的控制器正常工作。
我还建议您使用带 JMeterThread.last_sample_ok function的控制器。如果前一个采样器没问题,它返回true。 您可以使用in as条件。
答案 1 :(得分:0)
尝试以下方法:
$ {__ BeanShell的( “$ {httpCode}”。等于( “200”))}