1、BeanShell取样器的使用:
① 添加方法:线程组下右键-->Add-->Sampler-->BeanShell Sampler② 作用:我们可以直接在里面写java代码,然后再其它地方再获取自己写得代码返回得结果,但是有一个前提、如果我们写得java代码需要依赖某些类或工程,那么我们可以把这些依赖得东西打包成一个jar包,然后把这个jar包放到jmeter安装目录下的lib文件夹下即可,然后我们再BeanShell Sampler 里面写脚本的时候就先导入这个包即可
③ 例子:(需求)我想把我获取到的时间戳以及固定值组成的字符串再使用MD5进行加密,加密后的值作为一个实参供其它请求使用;
步骤,首先我们使用的是jmeter自带的commons包(没有可以自行去maven仓库下载),
脚本写法如下:
import org.apache.commons.codec.digest.DigestUtils; //导包
String nTime="${__time(,)}"; //函数助手获取时间戳
String signature_md5 = DigestUtils.md5Hex("123456"+nTime);//加密
vars.put("signature_md5", signature_md5); //加密后的值放入到变量中
vars.put("nowTime",nTime); //设实参,供其它地方使用,保证获取到的时间戳是相同的
2、BeanShell PostProcessor的使用:
① 添加方法:线程组右键-->Add->Post Processor->Bean Shell Processor (后置处理器)
② 作用:可以在里面写自己想要的代码,它的实现一般是在请求结束后执行
③ 使用:(需求)http请求结束后,返回的结果中文部分地方的文字变成了乱码,我想把它转回正常的;那么我直接在里面写上代码(把返回的结果编码设置成utf-8的)如添加:
prev.setDataEncoding("utf-8")
3、HTTP Header Manager的使用:
① 添加方法:右键->Add->Config Element(配置元件)->http header manager
② 作用:这里面写的东西相当于请求头里面的参数、比如我们可以在里面设置 Content-Type、X-Access-Token等属性,如果放的是全局的,那么对线程组下所有的请求都会生效;但是如果有请求的某个属性不一样、我们也可以单独为这个请求添加一个请求头设置,在里面加上对应的属性、发送请求的时候它会遵循就近原则的使用
4、函数助手中时间函数的使用:
点击函数助手->选择time函数->点击Rest Variables按钮->然后可以复制生成的表达式、然后把这个表达式放到需要这个实参的地方即可
5、函数助手中md5函数的使用:
点击函数助手->选择MD5函数,第一个参数是指要加密的字符串、第二个参数是等下要引用的变量名,第一个值也可以结合另外的函数一起如,要加密的字符串为:${__time(,)}+“12654”
6、http请求间的关系:
请求之间的执行顺序是从上到下的,所以写http request的时候要注意一下。例如登录接口需要用到访问首页接口中返回的cookie,那么这时候要注意把访问首页接口要先执行、所以要放登录接口之前。