突然发现JMeter系列写了不少文章,干脆整个全套的,把剩下的Demo也发一下,旧文如下:
下面讲讲JMeter如何处理cookie
,这里先讲一个事情,cookie
只是HTTP请求header
里面的一个字段,但是在JMeter里面是分开处理的,HTTP信息头管理器
和HTTP Cookie管理器
完全就是两个对象,分工不重复,在源码里面使用的是HeaderManager
和CookieManager
两个类。
首先讲一讲CookieManager
的基本使用,添加cookie
,获取cookie
,修改cookie
。
HTTP Cookie管理器
脚本内容:
import org.apache.jmeter.protocol.http.control.*
//Get cookie manager
import org.apache.jmeter.protocol.http.control.*
CookieManager cm = sampler.getCookieManager()
def a = new Cookie("FunTester", "FunTester323323", "account.cnblogs.com", "/", false, 1557598515)
cm.add(a)
Cookie c = cm.get(0)
log.info("-------Cookies : " + c.getName() + "----------- " + c.getValue())
c.setValue("FunTester")
log.info("-------Cookies : " + c.getName() + "----------- " + c.getValue())
这里注意一点,cookie有一个空参的构造方法,经过我验证,只设置name
和value
是不能被正确携带到请求里面去,必需把domian
和path
以及后面两个鬼参数都设置。
2020-03-19 21:04:35,634 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2020-03-19 21:04:35,635 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2020-03-19 21:04:35,636 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2020-03-19 21:04:35,949 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : 线程组
2020-03-19 21:04:35,949 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group 线程组.
2020-03-19 21:04:35,949 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2020-03-19 21:04:35,950 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=0 perThread=0.0 delayedStart=false
2020-03-19 21:04:35,950 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2020-03-19 21:04:35,950 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2020-03-19 21:04:35,951 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-1
2020-03-19 21:04:36,026 INFO o.a.j.m.J.处理cookie: -------Cookies : fds----------- 32423
2020-03-19 21:04:36,026 INFO o.a.j.m.J.处理cookie: -------Cookies : fds----------- FunTester
2020-03-19 21:04:36,302 INFO o.a.j.t.JMeterThread: Thread is done: 线程组 1-1
2020-03-19 21:04:36,302 INFO o.a.j.t.JMeterThread: Thread finished: 线程组 1-1
2020-03-19 21:04:36,303 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2020-03-19 21:04:36,303 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)