如果我们想访问一个系统或平台,一般都需要先注册一个用户,登录后才能看到具体的内容(成功访问其它接口)。平时我们用浏览器访问一个系统,一般登录一次后,下次再打开浏览器访问此系统,可能不需要登录就进去了,这就是浏览器中cookie起了作用。那么我们使用Jmeter做接口测试时,如何通过cookie拿到认证信息,不需登录就可以直接访问下一个接口了呢,下面一起来学习下。
比如上面请求某个页面的接口,响应数据中显示请登录后操作,也就是说需要先登录,才能访问该接口。
如果先请求登录接口,再请求该页面的接口,是否能成功呢?答案是否。因为虽然先请求了登录接口,但是并没有获得任何凭证(即访问别的接口需要的登录凭证,也就是登录后的cookie信息),所以再请求该页面接口时,仍提示登录后再操作。
那么如何保存我们所需要的cookie信息呢?在JMeter中有两种方式。
一种是通过HTTP Cookie管理器自动保存登录后的cookie信息。
操作步骤:
1、添加HTTP Cookie管理器。
只需添加进来就好,不需要任何设置。
2、启动计划,查看测试执行结果。
从上图可看到某页面的接口已请求成功(成功访问到页面内容)。
HTTP Cookie管理器的功能:
1、Cookie管理器就像一个web浏览器那样存储并发送cookie。
2、接收到的cookie数据可以作为JMeter线程的参数进行存储。
3、可以手动添加一个cookie到Cookie管理器。
另一种方式是通过正则表达式提取cookie信息,然后在HTTP信息头管理器手动添加提取的cookie信息。之所以会使用这种方式,是因为开发可能会自己定义一些cookie信息,但这些信息不会保存在HTTP Cookie管理器中,所以就需要我们去针对性的提取相应的cookie信息。
操作步骤:
1、添加正则表达式提取器。
2、配置正则表达式提取器。
因为cookie信息是在子请求中的响应消息头中保存着的,所以进行如下配置:
3、添加调试取样器,执行计划,查看提取结果。
4、将上面提取到的cookie值应用到个人管理接口中。
先启用个人管理请求,执行启动,看到应用cookie信息之前,个人管理请求响应结果如下:
然后给个人管理请求添加HTTP信息头管理器:
应用cookie信息:
接下来发送请求,查看响应结果:
从上图看到应用cookie信息后,个人管理接口已成功请求到相应页面,而没有被登录页面阻拦。
以上就是Jmeter中cookie关联的两种方式。如有任何问题,欢迎留言讨论。