使用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这个插件了,如下图:

 
那怎么使用呢,比如说刚才我调用的是获取用户信息的接口,我要获取到第一个user_id,返回的json是这样的:
 
 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测试接口的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter组件之-Test Fragment(测试片段)

不会代码的时候,如何使用 jmeter 完成接口测试

不会代码的时候,如何使用 jmeter 完成接口测试

不会代码的时候,如何使用 jmeter 完成接口测试

无法将特定步骤保存为测试片段

jmeter接口测试-使用rsa加密解密算法