我正在为我们的REST Web应用程序制定测试计划,我们有几种常见的测试类型,它们具有我们想要测试的通用标准。例如,当通过API创建实体时,我们对JSON响应有一组共同的期望;应该设置id,设置创建日期等等。
现在,我想像这样建模我的计划:
现在,我理解了作用域如何工作,如果我将断言置于 BOLD ed模块控制器的位置,那么它们将被调用每个采样器。但是,我不必在每个位置复制粘贴 - 维护相同断言的大量副本。因此,为什么我想要一种方法来定义一次断言,并在适当的时候调用。
但是,使用这种方法,永远不会调用放置在公共简单控制器中的 ACCENT ed断言(通过使用带有记录消息的BSF断言来确认)。如果我在公共断言简单控制器中放置一个额外的采样器,则调用它。但只有一次。
我使用的是JMeter 2.12,但已确认JMeter 2.8的行为方式相同。
那么,我如何使用JMeter定义一次断言,并在任何地方重复使用它们?
谢谢!
答案 0 :(得分:0)
我最终变得富有创意。 在Javascript中使用JSR223断言我已经完成了我想要的。这很自然,因为我想测试的所有响应数据都是JSON,YMMV。
在用户定义的变量中我使用Javascript定义了我想要执行的测试。
测试如下:
TEST_JSON:
try
{
eval('var obj = ' + prev.getResponseDataAsString());
} catch(e)
{
setFailed();
}
TEST_RESULT_SUCCESS
if(obj.status != "success")
{
setFailed();
}`
然后在断言中,我可以做类似的事情:
eval(vars.get("TEST_JSON"));
eval(vars.get("TEST_RESULT_SUCCESS"));
而且我不必一遍又一遍地重写测试。
我甚至有一些实用功能,我可以通过
添加到我的断言中eval(vars.get("TEST_UTIL"));
允许我根据需要从我的断言中打印其他日志记录。