使用jmeter做接口测试----柠檬不萌!
一、乱码解决方案
1、jmeter查看结果树乱码
(1)在jmeter的bin目录下找到jmeter.properties这个文件,添加上
sampleresult.default.encoding=utf-8
(2)重启jmeter
2、jmeter body data里面有乱码怎么解决
(1)在jmeter的bin目录下找到jmeter.properties这个文件,添加上
jsyntaxtextarea.font.family=Hack
(2)重启jmeter
二、使用jmeter做接口测试
测试接口之前,得有一个接口文档。我们用以下接口文档来讲解:
账号:xiaohei
密码:123456
打开jmeter,依次添加:线程组、HTTP请求、查看结果树
1、请求方式:get
范例:获取学生信息接口
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232024229-24336101.png)
2、请求方式:post
范例:登录接口
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232035435-1031375731.png)
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232041866-575560121.png)
3、请求方式:post,入参是json类型
范例:添加学生信息接口
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232049837-1271962327.png)
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232057024-1613856608.png)
4、添加cookie
范例:学生金币充值
学生金币充值接口文档: http://doc.nnzhp.cn/index.php?s=/6&page_id=11
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232328829-662640557.png)
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232339457-1980066497.png)
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232345984-305020388.png)
5、如何添加header信息
范例:获取所有学生信息
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232353733-606903169.png)
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232401345-1529147207.png)
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232413851-1614011140.png)
6、文件上传接口
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232443893-369354704.png)
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232453224-662653144.png)
三、jmeter的参数化
1、第一种方法:用户定义的变量
这种就是为了方便管理参数,只能有一个值,比如说ip地址不经常变化的
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232537738-1958541140.png)
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232545751-412759677.png)
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232552569-2007623191.png)
2、第二种方法:函数生成器
函数生成器可以参照一定的规则生成数据,这样的比如说生成一些随机数
(1)随机函数__Random
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232727114-1707915882.png)
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232737263-1576985176.png)
(2)计数函数__counter
此函数从1开始,每调用这个函数一次它就会自动加1
第一个参数:True,那么每个用户有自己的计数器,可以用于统计每个线程各执行了多少次。False,全局计数器。
第二个参数:重用计数器函数创建值的引用名。测试人员可以这样引用计数器的值:${test}。这样一来,测试人员就可以创建一个计数器后,在多个地方引用它的值。
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232747034-290848780.png)
(3)时间函数__time
hh代表12小时制,HH代表24小时制,如果函数的值什么都不写,则值取时间戳。
注释:时间戳,从计算机发明的那一天到现在过了多少秒(可以百度时间戳转换工具,转换成时间)。jmeter是java开发的,java里面的时间戳默认是精确到毫秒,所以要除以1000才是真正的时间戳
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232759741-875241650.png)
(4)唯一id函数__UUID
这个就是每次会生成一个随机的uuid,都是唯一的
3、第三种方法:从文件中读取
文件读取就是事先写好一些数据,然后从文件中读取,这样的话,比如说登录接口,账号和密码都是我们事先注册好的
添加--配置原件--CSV data set config-添加文件,取名字,在参数中用${你取得名字}代替。
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232813520-1175633206.png)
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232820371-903711745.png)
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232830201-1842109261.png)
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232836829-1312925504.png)
小提示:
如果把文件放在bin目录下,可以只写文件名,不用放绝对路径了。
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813232845795-853524125.png)
四、jmeter的关联
调用第一个接口,从接口的返回数据中拿到某个值,放到第二个接口里面来用
举例:登录得到的cookie,传给金币充值接口
1、登录时得到如下返回
{
"error_code": 0,
"login_info": {
"login_time": "20180811173721",
"sign": "f9ed588147c86ca4c600a0bac2b13179",
"userId": 1
}
}
2、于是得到函数(&代表大括号):
$.login_info.sign
3、登录接口下添加“后置处理器--JSON Extractor”,在哪个请求获取数据,就放在哪个请求的下面。
小提示:当返回不是json格式时,可以用正则表达式提取器
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813233218242-827274025.png)
4、把函数复制过去,取一个名字比如sessionid
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813233230169-1728928271.png)
5、在金币充值下添加“HTTP信息头管理器”,在HTTP信息头管理器中添加Cookie
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813233245030-2105255677.png)
6、填写好金币充值接口
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813233257943-1888919065.png)
7、执行,我们看到debug已经取到sessionid了,说明执行成功!
![](https://images2018.cnblogs.com/blog/1352084/201808/1352084-20180813233305916-955072842.png)