JMeter 测试常用到的一些功能
设置中文
在导航栏选择 Options->Choose Language->Chinese(Simplified) 即可设置为简体中文
设置后如下图
设置请求头
新增
HTTP信息头管理器逐个设置请求头即可,如果我们是post请求想要设置请求参数为json数据则可以添加
Content-Type,值为application/json
设置请求默认值
以百度搜索为例,新增
HTTP请求默认值然后直接设置请求的域名,协议,端口等信息
在发送http请求时,如果不设置这些信息,则会使用默认的
[外链图片转存失败(img-l6LecNDL-1565859654765)(https://i.loli.net/2019/08/15/8NU796HhzXFf2LI.png)]
设置普通变量并使用
还是以百度搜索为例,右键测试计划新增一个用户自定义配置元件
添加查询条件参数
新建一个http请求,通过
${参数名}的方式来获取参数
[外链图片转存失败(img-NMfrhBcJ-1565859654772)(https://i.loli.net/2019/08/15/NsrBmJQ36SaoMly.png)]启动查看结果,可以看到在http的名称和参数中都能获取到该参数
设置随机数变量并使用
右键选择测试计划创建
随机变量配置元件创建两个设置参数,和之前设置普通的一样
执行JMeter查看返回的随机数
[外链图片转存失败(img-6PmCqJqf-1565859654778)(https://i.loli.net/2019/08/15/7dxCbzR6y39sfhE.png)]
其他写法
添加3个用户自定义变量
[外链图片转存失败(img-fIOIZh10-1565859654779)(https://i.loli.net/2019/08/15/kO8fNguiaybmnrF.png)]使用
${__V(wd${__Random(1, 3)})}调用拆解
${__Random(1, 3)}: 随机生成1-3之间的整数wd${__Random(1, 3)}: 随机生成wd1, wd2, wd3中的任意1个字符串${__V(wd${__Random(1, 3)})}: 对形如wd1的字符串求值。也就是不把wd1当成字符串来看,而是把wd1当作是1个变量,并获取这个变量的值。wd1的值是我们在用户自定义变量中定义过的,也就是搜索。那么连起来,这个表达式的作用就是随机生成搜索第一个变量, 搜索第二个变量, 搜索第三个变量中的任意一个字符串
请求的结果如下
可以看到在http请求,名称中的参数和发送请求时wd的参数值不一样,即每次都请求都不一样
由于随机数的生成的时候会耗cpu和内存,当用户量并发量很大的时候,不推荐使用JMeter脚本来生成随机数,这个时候推荐使用下边的方法通过读取csv文件来获取请求的值
读取csv文件
- 创建txt文件 输入如下内容,另存为csv文件(编码为UTF-8),每次在txt文档修改保存 每组数据以英文逗号分隔
[外链图片转存失败(img-2CcqEAmE-1565859654788)(https://i.loli.net/2019/08/15/MBHEJ14QfiFTLuO.png)]
创建csv数据文件设置
title和value代表每行有两列数据(名字可以自己随便定义),把读取到的2个数据分别赋值给title和value(循环一次使用第一行数据,循环两次使用第二行数据,以此类推,超出则从第一行开始重新获取)使用变量还是和之前一样,可以看到参数设置成功
请求结果
获取到上一个方法的返回值,并设置为变量
在返回值为json数据是常用到,以京东的评论接口为例
因为京东有接口限制,所以我们要新添加
Content-Type和Referer这两个请求头新建一个http请求设置接口和参数
对接口进行请求,先尝试对返回结果进行提取
- 在
查看结果树中先将返回值换为json格式查看 - 然后在
JSON Path Expression后的数据框中输入提取字段方法测试,例如提去热门标签中的第一个名字,点击test测试是否能获取到 $.: 是固定开头,后边根据对象层级通过.来获取
- 在
右键在第二步中添加http请求,选择后置处理器添加
JSON Extractor在
JSON Extractor提取到需要的值,并设置参数名右键线程组添加
Debug Sampler调试取样器,来查看是否获取成功执行JMeter,可以看到设置成功
逻辑判断
右键线程组添加(if)选择控制器
设置当
${value}值为JMeter2时才执行右键(if)选择控制器,来新增一个http请求,不填任何数据使用默认值
注: 要将下边的Interpret Condition as Variable Expression?选框勾选去掉,否则无法通过${value}获取到参数值,而是将${value}当做字符串比较启动JMeter查看返回结果,只有
value为JMeter2时才执行了进入if判断请求
作者: 只是学习学习
邮箱: fengzxia1000@163.com
原文地址: https://fengzxia.gitee.io/posts/fd807af5.html
版权声明: 商业转载请联系作者获得授权,非商业转载请注明出处。