当前位置: 首页 > news >正文

大话JMeter2|正确get参数传递和HTTP如何正确使用

上节课展示了JMeter的基础用法:录制回放功能,断言,聚合报告。但是在无UI下如何进行接口的访问呢?如何正确get参数传递和HTTP如何正确使用。尤其是在无UI下进行接口的访问。小哥哥带着你用漫画来学习JMeter,让你在轻松的环境里了解新知识。

要创建采样器,只需要二步

  1. 添加 “Thread Group”

  2. 添加 “Http Request” Sampler

下面的接口逻辑如下:

接口介绍

我们使用的接口是自己创建的程序,同学可以自行寻找其它接口进行训练!

下面就是大名鼎鼎的登录接口:

Path: /api/v1/user/login

Method: POST

Header: { Content-Type : application/json }

request body:

"authRequest": {
       "userName": "{{login_email}}",
        "password": "{{login_pwd}}"}

我们向/api/v1/user/login发送请求,发送的header中需要包括Content-Type : application/json,请求体中如果含有:

"authRequest": {    "userName":"{{login_email}}",    "password": "{{login_pwd}}"}。

服务器会给我们一个反馈,它会验证邮箱和密码是否正确。如果login_email和login_pwd错误,我们将会得到Fail下面的信息:

Fail:
{    "code": "401",    "message": "login fail"}

如果login_email和login_pwd正确,将会得到Success下面的信息:

Success:
{  
     "code": "200",  
     "message": "login success",
     "access_token": "[access_token]"
}

有了这个access_token,我们就拿到了许可证。

浏览菜单接口

Path: /api/v1/menu/list

Method: GET

Header: {
Content-Type : application/json,
access_token : [access_token]
}

request parameter:type 
可选参数: breakfast, lunch, dinner

- Success:
{      "breakfast": [{
       "menu_nunber": "01",
       "menu_price": 5.50,
       "menu_name": "小笼包"},        
        { 
       "menu_nunber": "02",
       "menu_price": 3.00,
       "menu_name": "八宝粥" },
            ……
            ]
}

订单确认接口

Path: /api/v1/menu/confirm

Method: POST

Header: {
   Content-Type : application/json,
   access_token : [access_token]
}

request body:
{    "order_list": [ 
    { "menu_nunber" : "01",            
           "number" : 1 },        
    { "menu_nunber" : "03",            
          "number" : 2 }
          ]
}

Success : {  
     "code": "200",    
     "message": "Order success.",    
      "total": 3  #订单菜品总数}

Fail : 如果header中的 access_token 错误
{    
        "code": "401",    
        "message": "Please login first."}

注销接口

Path: /api/v1/user/logout

Method: DELETE

Header: {
Content-Type : application/json,
access_token : [access_token]
}

request parameter & body:None

Success : {    
     "code": "200",    
     "message": "logout success"}

Fail : 如果header中的 access_token 错误{    

    "code": "401",    

    "message": "Unknown user info, logout fail."}

采样器中定义请求名称:用户登录

配置 Host 、Port、Path = /api/v1/user/login

配置 Method = POST

HttpRequest中的body中添加请求参数

{

    “authRequest”: {    

        “userName”: “user01”,

        “password”: “pwd”  

    }

}

在Http Request中添加 Http Header Manager, 管理该请求的header信息

添加 “View Result Tree” 用于查看 请求/响应 详情

在Http Header Manager中配置如下参数Content-Type :application/json

运行并在View Result Tree中检查运行结果

创建浏览菜单接口请求,添加HttpRequest请求。配置请求名称:浏览菜单

输入hostname、port、path = /api/v1/menu/list

设定 Method = GET

在HttpRequest中添加Http Header Manager,暂时保持Http Header Manager中为空,我们之后会对其进行配置

返回代码为 401 提示信息为 “Please login first.”。聪明的读者,你们能为小象解答原因吗?

我已经创建好了所有接口,暂时保持Http Header Manager中为空:

提取接口的JSON返回值,需要在对应的HttpRequest中添加JSON Extractor (JSON 提取器)

需要使用json path来匹配需要提取的变量值。由于篇幅有限,我就不讲解json path的使用方法了,请大家自行搜索。

$. 代表JSON的根节点。可以在View Result Tree中打开 JSON Path Tester来确定所匹配的JSON变量路径的正确性

在JSON Extractor中填入如下信息

  • 量名称

  • JSON路径表达式

  • 匹配编号

在接口请求的header中添加access_token变量。JMeter中引用变量的方法 ${变量名}

在浏览菜单接口,订单确认接口, 用户注销接口中的header中添加${access_token} 变量

运行调试结果,配置正确之后,后台接口可以回传正常响应结果数据

相关文章:

  • 在Makefile中使用空格缩进的方法
  • 详解vue中vuex的用法
  • 利用Bat打开exe程序并传入值
  • 【iMessage苹果推群发】苹果相册推它由pushchatkey.pem和pushchatcert.pem作为单独的文件使用
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • 基于Xlinx的时序分析与约束(5)----衍生时钟约束
  • Python常见问题整理
  • Docker安装Zookeeper教程(超详细)
  • 【学习笔记12.25】动态规划入门
  • C语言用好写好头文件
  • 程序员过圣诞 | 用HTML写出绽放的烟花
  • 源码系列 之 HashMap
  • docker logs实时查看日志tail
  • Win10从零安装、训练、部署yolov5 6.x一条龙实战案例
  • 东北大学c++实验最后一次
  • 【mysql】环境安装、服务启动、密码设置
  • axios 和 cookie 的那些事
  • exports和module.exports
  • github指令
  • js算法-归并排序(merge_sort)
  • mysql innodb 索引使用指南
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • SpringBoot 实战 (三) | 配置文件详解
  • Vim 折腾记
  • Vultr 教程目录
  • webpack4 一点通
  • 浮动相关
  • 关于Java中分层中遇到的一些问题
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 前嗅ForeSpider教程:创建模板
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 详解NodeJs流之一
  • 学习使用ExpressJS 4.0中的新Router
  • 延迟脚本的方式
  •  一套莫尔斯电报听写、翻译系统
  • nb
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • !!Dom4j 学习笔记
  • #pragam once 和 #ifndef 预编译头
  • (1)SpringCloud 整合Python
  • (9)目标检测_SSD的原理
  • (LeetCode 49)Anagrams
  • (六)Hibernate的二级缓存
  • (四)c52学习之旅-流水LED灯
  • (算法)求1到1亿间的质数或素数
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET 事件模型教程(二)
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .net和php怎么连接,php和apache之间如何连接