在系列三中,只是实现了最基本的http请求,现在将对http请求进行一些优化。
一、加入HTTP默认请求值元件
1.添加HTTP默认请求值元件
右击 线程组->添加->配置元件->HTTP默认请求值
我们创建一个测试计划有很多个请求且都是发送到相同的server,每一个http请求都需要填写一遍协议、服务器名称或IP、端口、路径等,如果地址改了之后,又需要对每一个http请求进行修改,这很不方便。
这时,可以添加HTTP默认请求值,并且在HTTP默认请求值中配置一遍协议、服务器名称或IP、端口等,然后添加多个http请求且不设置协议、服务器名称或IP、端口等,这些http请求会默认使用HTTP默认请求值组件设置的值。
如果http请求中有配置,HTTP默认请求值中也有,则优先使用http请求中的配置。
2.配置HTTP默认请求值元件
3.清空登录接口的部分内容
4.运行接口请求
接口请求成功,说明我们配置的HTTP默认请求值生效了。
二、http请求加入响应断言元件
1.添加响应断言元件
如果http请求没有加入断言,在察看结果树中只能判断请求是否能通,而不能确定请求后响应的数据是否正确。这时可以添加响应断言来判断接口测试得到的接口返回值是否正确。
你要加哪个http请求的断言就右击该http请求 ->添加->断言->响应断言
2.响应断言介绍
(1)Apply to
关于应用范围,我们大多数勾选“main sample only” 就足够了,因为我们一个请求,实质上只有一个请求。但是当我们发一个请求时,可以触发多个服务器请求,就有main sample 和 sub-sample之分了。
(2)测试字段
勾选“响应文本”,会在响应数据中进行校验。
(3)模式匹配规则
勾选“包括”,意味着只要响应数据中包含要校验的字段,请求就算成功。
(4)测试模式
即需要校验的数据值。点击添加按钮进行添加,校验的数据值可以在察看结果树中的响应数据中获取。
3.测试响应断言
在http请求中更改错误的测试参数进行接口请求。
在响应数据中没有找到我们在响应断言中配置的"code":0,所以请求失败。
我们在改回正确的请求参数,再次请求。
在响应数据中,可以找到我们在响应断言中配置的"code":0,所以请求成功。
三、加入HTTP Cookie管理器元件
在接口测试的应用场景中,一般对业务的操作都是基于用户登录情况下的操作。
这里我新增一个增加来文数据的接口,这个接口肯定必须是登录的情况,如果未在登录的情况下,一般会跳转到登录的页面。目前是在未登录的情况下,进行的增加来文数据接口请求,如下图所示:
请求的数据中没有cookies,遇到这样的问题,确实让人很郁闷的,思路大多数人都是知道的,就是登录成功后,获取登录成功后的Cookie的信息,然后在增加来文数据的接口时,在请求头中带上Cookie的信息,已证明用户是登录成功后的操作。
可是登录成功后,怎么获取登录成功后的Cookie信息呢?那么这时,就可以使用HTTPCookie的管理器来解决这个问题了。
1.Cookie管理器的特性:
(1)能够像web浏览器一样存储和发送cookies;
(2)若有一个HTTP请求和响应包含一个cookie,cookie管理器会自动存储该cookie,并能够通过cookie保持会话;
(3)JMeter的每个线程都有自己的"cookie存储区"。所以,如果你正在测试一个使用cookie来存储会话信息的网站,那么每个JMeter线程都有自己的会话。请注意,这种cookies不会在cookie管理器中展示出来,但可以在“查看结果树”中看到它们;
(4)JMeter会检查收到的cookies是否对URL有效。这意味着跨域的cookie不能被存储。如果你有窃听行为,或者想要存储跨域cookies,需要在jmeter.poperties中设置:“ CookieManager.check.cookies = false”;接收到的Cookies可以存储为JMeter的线程变量。如果要把 cookies保存为变量,需要设置:“ CookieManager.save.cookies =true“;
(5)默认情况下jmeter中的cookies在存储时名字前缀为"COOKIE_ ",这是为了避免因局部变量重名引起的异常情况。如果不想用这个前缀,需要定义属性“CookieManager.name.prefix = ”(一个或多个空格)。如果使用了前缀,则一个名称为TEST的cookie的值可以通过$ {COOKIE_TEST}获取 ;
(6)你可以手动添加一个cookie到cookie管理器。如果你这样做,这个cookie将被所有JMeter的线程共享。
(7)空值的cookies默认被忽略掉。这可以通过设置JMeter的属性进行更改:CookieManager.delete_null_cookies =false。请注意,这也适用手工定义的cookies-任何此类cookies在更新后会从cookie manager中移除;
(8)还需要注意的是cookie名称必须是唯一的-如果一个cookie的名称与已有cookie同名,它将取代原有的cookie。
注:如果在一个取样器作用域中有多个cookie管理器,目前没有办法去指定使用某一个。并且,一个cookie管理器中保存的cookie不能被其它的cookie管理器使用,所以要慎用多个cookie管理器
2.添加HTTP Cookie管理器元件
右击 线程组->添加->配置元件->HTTP Cookie管理器
3.接下来我们再次进行请求,cookie已经有数据了,请求也已经成功了。