Jmeter小试牛刀-响应断言与BeanShell断言

2019-05-08  本文已影响0人  _帆帆历险记

一、响应断言

可根据要测试的响应字段和模式匹配规则来设置断言,判断接口返回值是否正确。

1.运行一个登录的http请求,查看响应数据:

2.添加响应断言

勾选,输入相关信息  (测试字段与输入的参数要是对应的)

一个断言:

一个断言

多个断言,但必须同时满足,才算断言成功:

多个断言,但必须同时满足,才算断言成功

勾选"或",多个断言,满足一个即成功:

勾选"或",多个断言,满足一个即成功

① 测试字段:

响应文本: 服务器响应文本,一般普通http响应,都勾选这个。

响应代码:http响应代码,如101,200,302,404,501等。但当我们要验证404,501等http响应代码时,需要勾选“ ignore status”。因为当http 响应代码为400,500时,jmeter默认这个请求时失败的。

响应信息:http响应代码对应的响应信息,例如:OK, Found   (断言时大小写敏感)

       HTTP/1.1 200 OK

       HTTP/1.1 302 Found 

响应头:例如

                    Server: Tengine

                    Date: Thu, 12 Mar 2015 09:43:52 GMT

                    Content-Type: text/html

                    Content-Length: 260

                    Connection: close

                    Location: http://www.baidu.com/404.html

文档(文本):一般普通http请求,不要选择这个。

url样本:是对sample的url进行断言。如果请求没有重定向(302),那么就是这个就是请求url。 如果有重定向(且跟随重定向),那么url就包含请求url 和 重定向url

② 模式匹配规则:

包括:返回结果包括你指定的内容,支持正则匹配

例如:

  测试字段为: 响应文本

     模式匹配规则:包括

     断言为:1、invalid    2、[a-z]+

当返回值为:{"msg":"channel invalid."} , 这两个断言都是ok的,返回true

备注:[a-z] 表示匹配 26 个小写字母中的任意一个

           a+ 表示匹配一个或多个 a 字符

           所以[a-z]+表示一个或多个  26 个小写字母中的任意一个 ?

匹配:

  (1) 相当于 equals 。当返回值固定时,可以用返回值做断言,效果和equals相同

  (2) 正则匹配 。 用正则表达式匹配返回结果,但必须全部匹配。 即正则表达式必须能匹配整个返回值,而不是返回值的一部分。

相等 :返回结果与你指定断言完全一致

SubString:与 “包括”差不多,都是指返回结果包括你指定的内容,但是subString不支持正则字符串

:就相当于取反。 如果上面断言结果为true,勾选“否”后,最终断言结果为false。如果上面断言结果为false,勾选“否”后,则最终断言结果为 true。

3.添加断言结果

断言结果会记录 执行成功和执行失败的记录

二. BeanShell断言

BeanShell断言可以用于更复杂的个性化需求,使用更灵活,功能更强大

一个简单示例:

例中的代码就是判断响应代码是不是200,是200即断言成功;不是200则断言失败,输出报错信息

不过呢。。这个代码对我来说有一点局限性,有些值还是不会取。。有没有更适合我的方法呢?

有!

根据这个教程Jmeter使用BeanShell 断言进行判断受到了启发

教程内容截图:

看!这个引用!我可以先用提取器提取要验证的内容,然后引用在代码里进行验证

实际应用:

登录成功时,error_code值为0,若登录失败值不为0

用边界提取器提取error_code的值

引用在代码里

一个登录失败的情况:

不过代码还是要学起来呀。。(哭)


响应断言参考教程:

Jmeter断言实例—响应断言

jmeter初级-添加断言(接口测试)

Jmeter 常用断言使用

Jmeter笔记:响应断言详解(有测试字段的详细说明)

JMeter 检查点之响应断言(Response Assertion)(也有测试字段的详细说明)

 BeanShell断言参考教程:

https://blog.csdn.net/lijing742180/article/details/81157947

https://blog.51cto.com/14010723/2298911(含BeanShell内置变量说明)

上一篇下一篇

猜你喜欢

热点阅读