响应断言就是判断响应信息里,是否有我们想要的信息。如果有,就说明测试通过,如果没有,就说明测试不通过,那就可能有bug了。添加断言的步骤
这里依旧以前面用的模拟接口响应的java请求为例,可以看到响应断言的配置面板,和正则表达式提取器的配置面板很相似
“Apply to”,和正则表达式提取器里的一样,可以断言主请求、重定向请求,及变量的值。要测试的响应字段,也和正则表达式提取器的一样,可以断言响应的主体,响应头,URL等,唯最后多了一个:忽略响应状态。这个是做什么用的,后面会讲。
模式匹配规则,有五个选项。默认的是Substring,这种模式就是要断言的文本里,是否包含有要断言的内容。添加一个要测试的模式,里面写上 张三 。
保存运行,结果是对的,也就是响应里有 张三 这个子字符串,就会断言成功,把 张三 改为 张四,再运行就会失败了,因为响应里,没有 张四 这个子字符串。
我们看到第一个选项为 包括,包括 和 Substring 是差不多的,不同点就是 包括 的测试模式里面可以写正则表达式,而 Substring 的测试模式里面,不能写正则表达式,比如可以这样写
就是断言响应里面是否包含有连续的11位数字,也就是手机号了,结果是成功的。如果断言 \d{12},那就会失败,因为响应里面没有连续的12位数字。
Equals,学过java就会知道,这个可以用来判断两个字符串的内容是否完全一样。这里也是这个意思,就是断言响应的文本是否就是测试模式里的文本,要完全一样,一个字符都不能差。匹配,也是这样,只是 匹配 的测试模式里可以用正则,Equals 的测试模式里,不能用正则。
最后面的 否,那就是取反的意思了,比如要断言响应信息里,不包含 张三 ,就可以这样配置
在测试的时候,有可能会遇到这种情况,比如调用登录的接口,用户名或是密码不合法的时候,会响应一个提示,然后状态码是400,当然也可以是其它的,由程序员定义。这个时候,用jmeter调用接口,因为状态码是4开头,所以都会判定为请求失败,但实际上,接口是正确响应了的,这个时候,就需要忽略掉响应的状态码。在 要测试的响应字段 里,把最后一项勾上,就可以了。
有些时候,直接断言响应的内容,是实现不了需求的。以模拟接口的响应为例,要断言用户 张三 的 status 是 Y,就这样直接写断言的测试模式,是没法写的。这个时候,就需要和正则表达式提取器一起使用,先把 张三 的 status 用正则表达式提取出来放到一个变量中,再使用响应变量的值的java请求把变量的值响应出来,再断言。
这样就可以实现需求了,断言变量的值,似乎不能用。
欢迎加入测试群:91425817,一起讨论测试的那此事。