zoukankan      html  css  js  c++  java
  • 大话JMeter2|正确get参数传递和HTTP如何正确使用

    上节课展示了JMeter的基础用法:录制回放功能,断言,聚合报告。李政道教授谈论学习方法,他表明我们可以获取很多信息。

    但是,从了解到理解还有一段路要走。只有亲手练了才能变成理解,能获取信息不代表自己理解。

    但如何正确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} 变量

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

    写在最后

    本文使用漫画形式向大家展示了JMeter的进阶用法:无UI下进行接口的访问,参数传递机制。同学们,不知道你们学会了吗?请同学们勤加练习,争取学到更多的知识,本内容出自霍格沃兹测试学院,想进一步学习JMeter的使用?请继续关注我们。

    你喜欢小伙这篇文吗?

    喜观就点“在看”鼓励小伙吧 ** ** ** ** ************

    来霍格沃兹测试开发学社,学习更多软件测试与测试开发的进阶技术,知识点涵盖web自动化测试 app自动化测试、接口自动化测试、测试框架、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,课程技术涵盖bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相关技术,全面提升测试开发工程师的技术实力
    QQ交流群:484590337
    公众号 TestingStudio
    点击获取更多信息

  • 相关阅读:
    「日常训练」More Cowbell(Codeforces Round #334 Div.2 B)
    「日常训练」Battle Over Cities
    「日常训练」湫湫系列故事——设计风景线(HDU-4514)
    「日常训练」Caterpillar(POJ-3310)
    python压缩解压文件
    python图像处理
    python删除文件或者目录
    python循环执行程序的装饰器
    python中logging模块的使用
    python中yield迭代器
  • 原文地址:https://www.cnblogs.com/hogwarts/p/15812691.html
Copyright © 2011-2022 走看看