一.什么是断言。

  通过对接口的返回进行筛选,选择出一段特定的“字符串”片段,和确定响应的结果进行对比确定是否相同,如果相同则断言成功。日常使用中,选择的断言应该是可以直观的,准确的确定接口是否调用成功的一个数据。通常使用返回状态码,returncode,returnmsg,等类似的字段进行匹配。

  jmeter常见的断言有如下几种:

  

jmeter javascript断言脚本 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会对整个的返回进行查找。如果找到,断言正确。

    

jmeter javascript断言脚本 jmeter常用断言_json_02

 

 

 

    返回报文中有测试模式中的语句,使用断言正确

    

jmeter javascript断言脚本 jmeter常用断言_响应时间_03

jmeter javascript断言脚本 jmeter常用断言_响应时间_04

 

 

     响应断言其他的方式后续补充。

  2.json断言。

     json断言主要的原理是,根据json的键值对的模式进行匹配,层级筛选出想要的值。在进行断言时,根据路径确定键,则能的到对应键的值。

     

jmeter javascript断言脚本 jmeter常用断言_json_05

 

 

     

jmeter javascript断言脚本 jmeter常用断言_响应时间_03

jmeter javascript断言脚本 jmeter常用断言_json_07

      这样断言也会成功。

     在上述的返回中,我们发现,还有嵌套的[]存在。这样如何获取?

     

jmeter javascript断言脚本 jmeter常用断言_响应时间_08

$  表示跟节点。[] 表示数组,0表示第一个;$[0]   表示跟节点后的第一个对象。.代表去下一个层级节点。具体的用法参照 :https://goessner.net/articles/JsonPath/。

注1:因为json断言十分的依赖层级关系。在大量的复杂的json返回中,会出现层级较为混乱的现象,无法直观的看出层级。这时候可以借助json工具规范化json方便查看。

 3.断言持续时间

 约定响应时间,响应时间如果超出约定,则断言为失败。

      

jmeter javascript断言脚本 jmeter常用断言_响应时间_09

    4.大小断言

                   对返回的数据包大小进行断言。

         

jmeter javascript断言脚本 jmeter常用断言_响应时间_10

    5.JSR223 断言

XPath2 Assertion

                该断言用于xml返回时使用。和json类似,通过层级的筛选,选出对应的值。