使用jmeter测试接口
Posted xhylwq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用jmeter测试接口相关的知识,希望对你有一定的参考价值。
Jmeter写脚本
1、修改jmeter查看结果树乱码问题:
在jmeter\\bin目录下找到jmeter.properties文件,找到sampleresult.default.encoding这个之后在该注释行下添加如下:
sampleresult.default.encoding=utf-8
保持该文件,并重启jmeter,就可以解决jmeter返回解决乱码的问题。
2、 jmeter中发送post信息body data中包含中文信息显示乱码,解决body data中文乱码问题:
在jmeter\\bin目录下找到jmeter.properties文件,找到jsyntaxtextarea.font.family=Hack这一行之后去掉#号,重启jmeter即可。
3、 在body data中显示的中文正确,但是运行之后在数据库中查看数据却是乱码,需要在请求出添加为utf-8即可。
如下例子是通过jmeter来测试 如下接口文档的内容,
接口文档:
http://doc.nnzhp.cn/
xiaohei 123456
1. 获取学生信息接口
使用jmeter 测试此接口:
1.1 首先定义一个全局变量如下:
1.2 定义参数化数据
1.3 详细定义http请求如下:‘
2 . 登录
使用 postman 来测试这个接口:
这里是为下面的关联作准备:
查看结果树的结果如下:
3. 添加学生信息
使用jmeter 测试这个接口如下:
如下是一串json字符串:
{
"name":"刘欣雨${__time(yyyyMMddHHmmss,9999)}",
"grade":"水瓶座",
"phone":1861234${__Random(1000,9999,)}
}
如下函数的操作方法如下:
最终把第4部分的数据复制出来,粘贴到 json字符串中。
最终运行结果如下:
另外还有一种时间戳${__time(,9999)} 【函数助手里面,开始值可以不写,表示时间戳】
注:时间戳:是指计算机诞生那一天到现在过了多少豪秒。它是一串数字 1526804021458豪秒,除以1000,得到单位为1526804021秒。
因为Jemter里面的时间戳的值是精确到毫秒。
4. 学生金币充值
使用jmetet 测试接口文档如下:
4.1 未使用关联表达式
增加cookie管理器:
4.2 增加cookie管理器,使用 关联表达式
其中这个 ${sign}的值来自上面第 二个 登陆 接口中的值:
5. 获取所有学生信息
使用jmeter 来测试接口:
查看结果树内容如下:
6. 上传文件接口
使用jmeter测试接口 :
6.1
小结:
1. get请求和post请求的区别:
get的请求是放在url里面,
post的请求是放在body里面。
cookie 存放在本地的键值对 key - value
session 存放在服务器的键值对 key - value
2. Jmeter中处理json
我们在做http接口测试的时候,返回的数据都是json串,Jmeter中本身是不支持直接处理json串的,如果要获取到返回结果中指定的值,必须要要通过正则表达式来获取到,正则表达式比较麻烦,写错了就获取不到值了,大家都知道json是key-value这样来存值的,那jmeter里面能不能直接通过key取值呢,这样的话就不用正则表达式那么麻烦了。
如果想要通过key直接取值的话,jmeter官方有一个 json path extractor的插件,装上它就可以直接处理json了,通过key来取值。该插件下载地址为:http://jmeter-plugins.org/wiki/JSONPathExtractor/,下载完之后,把lib文件夹放到jmeter的目录下就ok了。
打开jmeter,这里用的jmeter是3.0版本,新建一个调用接口的http请求,然后添加后置处理器,就可以看到有json path extractor这个插件了,如下图:
1 { 2 "code":200, 3 "info":[ 4 { 5 "age": 18, 6 "id": 7, 7 "sex": "male", 8 "username": "myname" 9 }, 10 { 11 "age": 23, 12 "id": 90, 13 "sex": "female", 14 "username": "yourname" 15 } 16 ] 17 } 18
分析一下这个json串,userid在info这个列表里面存着,取第一个userid,那就要先取到info里面的值,再取info里面的第一个元素,就是用户信息,再取到userid。
json path extractor中使用$代表原来接口的返回值(代表最外层的值),取值如下图:这样就可以直接使用key来取json里面的值了,快去试试吧。
以上是关于使用jmeter测试接口的主要内容,如果未能解决你的问题,请参考以下文章