目前接口请求都需鉴权,所以在接口测试/自动化测试之前,可以先把鉴权数据存入某个变量,然后再用jmeter内置函数,存成属性,再跨线程传参到各个接口。注意:正则提取器或者json提取器、beanshell后置处理器都应该放在线程下,而非test plan下。
例如:用正则提取器或者json提取器,获得返回的鉴权数据,存入某变量
用beanshell后置处理器,设置成属性,如下:
${__setProperty(access_token,${access},)};
函数用法如下:
${__setProperty(property name, property value, True/False)}
该函数用来给JMeter属性设置值,默认返回值为空字符串,所以函数在任何地方被调用都是有效的
Property Name:要设置的属性名,必要属性
Property Value:要设置的属性的值,必要属性
True/False:原值是否要返回,非必要属性;当设置为“true”,将返回原始值
作用域:跨线程组调用,可以在任意地方调用,但不能跟在import xxx后面
注:该函数的参数无需使用双引号引用
引用该属性的方法:
Bearer ${__P(access_token)}
函数用法如下:
${__P(property name, default value)}
这是简化版的属性函数,旨在为用户在命令行使用属性定义。它不像__property函数那样有可以存值的变量,并且如果没有提供默认值,侧假定默认给1,原因是它对常见的测试变量(如循环、线程数、ramp up等)有效
Property Name:要检索的属性名,必要属性
Default Value:默认值,不填的话会默认设置1,非必要属性
作用域:可跨线程使用
注:因为该函数只允许使用两个参数,且必须使用逗号分隔,如果在第二个参数值中也存在逗号,需要使用“\”反斜线转义,否则函数无效,如下:
${__P(prop1, www.baidu.com)} : 当prop1未定义时,函数返回 www.baidu.com
${__P(prop1, www.baidu.~!@#¥%……&*()——+‘;com)} : 当prop1未定义时,函数返回 www.baidu.~!@#¥%……&*()——+‘;com(非逗号的其他符号基本都能正常显示)
${__P(prop1, www.baidu\,com)} : 当prop1未定义时,函数返回 www.baidu,com
${__P(prop1, www.baidu,com)} : 当prop1未定义时,函数没有任何返回
这样在各个线程中,就可以引用刚才的鉴权信息,实现跨线程传参。