当前位置 博文首页 > 繁华似锦Fighting:『动善时』JMeter基础 — 21、HTTP Cookie管
上一篇文章详细的介绍了HTTP Cookie管理器的作用和内容,本篇文章详细的说明一下使用。
我们使用一个电商项目进行演示,在调用登录接口完成登录之后,通过查看购物车接口获取该用户购物车中的信息。也就是说如果需要查看到购物车中的信息,则我们先要是登陆状态,这样的情况下,就需要有Cookie信息的存在了。
提示:要获取购物车接口中的信息,需要使用登录后的Cookie保持登录状态。
实现步骤:
http://www.testingedu.com.cn:8000/index.php/Home/user/login.html
。提示:关于该网站登陆授权的Cookie信息就是
PHPSESSID
,我们只保存这一条Cookie即可。
添加元件操作步骤:
选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
。选中“线程组”右键 —> 添加 —> 配置元件 —> HTTP信息头管理器
。选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求
。选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树
。最终测试计划中的元件如下:
点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。
如下图所示:
两个HTTP请求取样器的内容是一样的,只不过有Cookie的请求前加了HTTP信息头管理器组件。
我们在请求头中添加上Cookie信息,如下图所示:
当然我们可以用HTTP Cookie管理器组件来替换HTTP信息头管理器组件。
如下图所示:
两种方式下效果是一样的,我更喜欢使用HTTP信息头管理器组件。
我们现在查看没带Cookie信息的请求结果,发现返回数据提示看不到购物车的内容。
如下图所示:
我们再来看一下带Cookie信息的请求结果,发现可以看到购物车中的信息,如下图所示:
实现步骤:
提示:关于该网站登陆授权的Cookie信息就是
PHPSESSID
,我们只保存这一条Cookie即可。
添加元件操作步骤:
选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
。选中“线程组”右键 —> 添加 —> 配置元件 —> HTTP Cookie管理器
。选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求
。(如有多个请求,添加多次)选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树
。最终测试计划中的元件如下:
点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。
什么都不用填写,保持原样即可。
简单说明一下:
Debug Sampler
组件)1)登陆请求界面内容
填写好请求地址和请求参数,如下图所示:
2)查看购物车请求界面内容
查看购物车接口,没有请求参数,我们使用Get请求就可以。其中的Cookie信息,会自动添加到请求头信息中。
如果没有添加HTTP Cookie管理器组件,则该请求的请求头信息中不会带有Cookie信息,会显示[no cookies]
。
脚本运行结果如下图所示:
我们可以看到,两个请求都请求成功了。登陆请求中是没有Cookie信息的,登陆之后服务端会返回Cookie信息给客户端。而HTTP Cookie管理器组件保存了这些Cookie信息,并应用于之后的接口请求中,所以在查看购物车请求中,我们看到了Cookie数据。
前面我们说过,JMeter中自动收集的Cookie信息,是不会在HTTP Cookie管理器中进行展示,接受到的Cookie信息会被自动存储在线程变量中。
如果我们需要查看或引用这些Cookie信息怎么办?
(1)修改JMeter.property
文件
修改jmeter/bin/jmeter.properties
文件,把CookieManager.save.cookies
属性打开,意思是保存Cookie数据到线程变量中。
操作如下:
CookieManager.save.cookies=true # 取消注释,false修改成true
(2)添加Debug Sampler
取样器
添加Debug Sampler
组件:选中“线程组”右键 —> 添加 —> 取样器 —> Debug Sampler
。
我们以上面练习为例,添加完Debug Sampler
组件后,测试计划中的元件如下:
(3)查看Debug Sampler
组件中的结果
运行测试计划,然后在察看结果树中,查看Debug Sampler
组件中的值。
如下图所示:
红框中的内容,就是登陆请求后,服务端返回给客户端的Cookie信息。
之后我们可以使用${COOKIE_名称}
的方式,在其他的地方引用该Cookie信息。
JMeter.property
文件中的CookieManager.name.prefix=
属性,能够用来修改默认的变量名COOKIE_
的开头。