jmeter做接口测试过程中,经常遇到请求需要用到token或者cookie的时候,可以把返回token或cookie的接口用后置处理器提取出来,但是在这种情况下,只能适用于当前的线程组,其他线程组无法引用到提取的token或cookie的变量值,所以必须要生成全局变量让测试计划下的所有线程组都可以引用变量。
-
首先添加一个setUp线程组用来放到所有请求前执行,用于提取需要的cookie值(以禅道为例)
禅道中接口访问需要用到zentaosid是在登录的Response headers中,我们需要把zentaosid用后置处理器提取出来赋值给一个变量
-
使用边界值提取器把zentaosid提取出来赋值给变量ckie
边界值提取器提取出来无法全局使用,仅作用于当前线程组
-
使用函数助手对话框的setProperty函数,有两个输入框要填写(属性名称和Value of property),属性名称填写一个全局变量名,Value of property填写边界值提取到的zentaosid(边界值提取器提取到的zentaosid赋值给了变量ckie,此处引用变量${ckie}得到zentaosid)
-
在边界值提取器下添加一个后置处理器BeanShell PostProcessor
-
把生成的setProperty函数复制到BeanShell PostProcessor中
此时已经生成把接口需要用到的zentaosid生成了全局变量并赋值给了ztsid
- 引用该全局变量有两种方式
(1)使用函数助手中的property函数,只填写属性名称对应的输入框:全局变量名ztsid
把生成的结果放到需要zentaosid访问的接口的http cookie管理器中
(2)使用函数助手中的P函数,只填写属性名称对应的输入框:全局变量名ztsid
把生成的结果放到需要zentaosid访问的接口的http cookie管理器中