一.什么是断言。
通过对接口的返回进行筛选,选择出一段特定的“字符串”片段,和确定响应的结果进行对比确定是否相同,如果相同则断言成功。日常使用中,选择的断言应该是可以直观的,准确的确定接口是否调用成功的一个数据。通常使用返回状态码,returncode,returnmsg,等类似的字段进行匹配。
jmeter常见的断言有如下几种:
下面我用以下的json作为返回,为之后提供依据。
{
"ROOT":{
"BODY":{
"DETAIL_MSG":"OK",
"OUT_DATA":{
"USER_INFO":{
"BRAND_ID":"01",
"CONTRACT_STATUS":"N",
"CURMM_EXP_POINT":"0",
"CURYY_EXP_POINT":"0",
"NET_AGE":"54",
"POINT_BALANCE":"274",
"POINT_TYPEINFO":[
{
"EFF_TIME":"test1",
"POINT_SUM":"31",
"POINT_TYPE":"01",
"POINT_TYPE_NAME":"快乐积分",
"RELEASE_TIME":"20210508210651",
"USED_POINT":"39",
"VALIDATE_TIME":"20240430235951"
},
{
"EFF_TIME":"test2",
"POINT_SUM":"32",
"POINT_TYPE":"02",
"POINT_TYPE_NAME":"快乐积分积分",
"RELEASE_TIME":"20210508210652",
"USED_POINT":"39",
"VALIDATE_TIME":"20240430235952"
},
{
"EFF_TIME":"test3",
"POINT_SUM":"33",
"POINT_TYPE":"03",
"POINT_TYPE_NAME":"快乐积分快乐积分积分",
"RELEASE_TIME":"20210508210653",
"USED_POINT":"38",
"VALIDATE_TIME":"20210508210653"
},
{
"EFF_TIME":"test4",
"POINT_SUM":"34",
"POINT_TYPE":"04",
"POINT_TYPE_NAME":"快乐积分快乐积分快乐积分积分",
"RELEASE_TIME":"20210508210654",
"USED_POINT":"39",
"VALIDATE_TIME":"20210508210654"
}
],
"PRC_CONTRACT_STATUS":"00",
"RELEASEFACTOR_UPTIME":"",
"RELEASE_FACTOR":"1",
"RUN_CODE":"A",
"STAR_LEVEL":"11",
"TOTAL_POINT":"274",
"VALIDATE_START_TIME":""
}
},
"PROMPT_MSG":"",
"REQUEST_ID":"20220308105819448_1_68",
"RETURN_CODE":"0",
"RETURN_MSG":"OK",
"RUN_IP":"5.243.0.28",
"USER_MSG":"OK"
},
"HEADER":{
"DB_ID":"A1",
"ROUTING":{
"ROUTE_KEY":"10",
"ROUTE_VALUE":"20175718"
},
"PARENT_CALL_ID":"20220308100319138397",
"TENANT_ID":"34"
}
}
}
1.响应断言。
最长使用的是响应文本,只需要在测试模式的框中将需要返回的预期结果放入。jmeter会对整个的返回进行查找。如果找到,断言正确。
返回报文中有测试模式中的语句,使用断言正确
响应断言其他的方式后续补充。
2.json断言。
json断言主要的原理是,根据json的键值对的模式进行匹配,层级筛选出想要的值。在进行断言时,根据路径确定键,则能的到对应键的值。
这样断言也会成功。
在上述的返回中,我们发现,还有嵌套的[]存在。这样如何获取?
在[]的情况下,没有对应的键存在,只能通过上级节点的名称加下标指定对应的json段。(下标从0开始)。$ 表示跟节点。[] 表示数组,0表示第一个;$[0] 表示跟节点后的第一个对象。.代表去下一个层级节点。具体的用法参照 :https://goessner.net/articles/JsonPath/。
注1:因为json断言十分的依赖层级关系。在大量的复杂的json返回中,会出现层级较为混乱的现象,无法直观的看出层级。这时候可以借助json工具规范化json方便查看。
3.断言持续时间
约定响应时间,响应时间如果超出约定,则断言为失败。
4.大小断言
对返回的数据包大小进行断言。
5.JSR223 断言
6.XPath2 Assertion
该断言用于xml返回时使用。和json类似,通过层级的筛选,选出对应的值。