zoukankan      html  css  js  c++  java
  • Jmeter4.0----正则表达式提取器(11)

    1.说明

    有时候需要将前一个请求返回的数据作为下一个请求的参数时,我们就需要正则表达式提取器。使用正则表达式提取器去提取我们想要的部分再传入后面的请求中。

    (之前看了一篇不错的博客,可以参考学习 https://blog.csdn.net/quiet_girl/article/details/50681413)

    2.案列说明  

    以报告系统编制人员为例,编制人员创建一条记录,创建成功返回参数,其中包括该条记录ID,并且要将ID的值取出来作为之后请求的参数

    3.步骤

    第一步:添加正则表达式提取器

    HTTP请求 鼠标右键 =>添加 后置处理器 =>正则表达式提取器

    在该模块(创建一条记录)上添加Debug Sampler及察看结果树

    控制器 => Sampler => Debug Sampler(用来查看正则表达式提取的内容)

    第二步:提取请求返回的我们需要的内容

    返回数据({"result":true,"success":"success","dataFormat":"TEXT","resultCode":0,"attributes":[{"ID":"6487f19951f741a08d27b204167b55a3"}],"message":"null"})

    请求二需要的数据6487f19951f741a08d27b204167b55a3     "ID":"(.+?)"

    (1)引用名称:下个请求将要引用到的变量名;

    (2)正则表达式:提取自己想要的内容的正则表达式,小括号()表示提取,即对于你想要提取的内容需要用它括起来;

    (3)模板:使用提取到的第几个值。因为可能有多个值匹配,所以要使用模板。从1开始匹配,一次类推。这里只有一个,所以填写$1$即可;

    (4)匹配数字:表示如何取值。0代表随机取值,1代表全部取值。这里只有一个,填1即可;

    (5)缺省值:表示没有取到值的话,默认给它的值。建议填入引用名称,避免巧合情况下导致的数据问题

    若上传两个文件,返回数据为:

    {"/a76528ded4d240df88b9802391b1db91/19de4b1906e34dc18a75b4831ea1521d/epw-admin-hegezhang.png":{"Path":"eb90d6fd9bba4f508a51dbb6258f729d/a76528ded4d240df88b9802391b1db91/19de4b1906e34dc18a75b4831ea1521d/epw-admin-hegezhang.png","treePreview":"png","Filename":"epw-admin-hegezhang.png","File Type":"png","Preview":"images/fileicons2/png.png","Error":"","Index":0,"ID":"eb90d6fd9bba4f508a51dbb6258f729d","Properties":{"Size":67391,"Date Modified":"2017-04-13 17:50:11.0","filemtime":1492077011000},"Code":""},"/a76528ded4d240df88b9802391b1db91/19de4b1906e34dc18a75b4831ea1521d/epw-bz-1.pdf":{"Path":"fe529da0aec74c0bb2057cc8196e9482/a76528ded4d240df88b9802391b1db91/19de4b1906e34dc18a75b4831ea1521d/epw-bz-1.pdf","treePreview":"pdf","Filename":"epw-bz-1.pdf","File Type":"pdf","Preview":"images/fileicons2/pdf.png","Error":"","Index":1,"ID":"fe529da0aec74c0bb2057cc8196e9482","Properties":{"Size":227230,"Date Modified":"2017-04-13 17:50:11.0","filemtime":1492077011000},"Code":""}}

    需要取出数据fe529da0aec74c0bb2057cc8196e9482如下设置即可:

    若返回如下格式:

    {

    :   "result":true,

    :   "data":"{"fileName":"MU0xMHll.pdf","fileHash":"bd88e1e120737851b75c767fe5e01151","fileId":"f6a5febff0d24afdb99cb752c9eaf47d","fileVisitUrl":"group1/M00/00/01/rBCy2lyPX3CAXlXAABQegjiQbjg612.pdf"}",

    :   "success":"success",

    :   "dataFormat":"TEXT",

    :   "resultCode":0,

    :   "attributes":

    :   [

    :   ],

    :   "timestamp":1552899952584

    }

    该接口返回值,想要获取fileName的值,则正则表达式为:"fileName\":\"(.+?)\

     

    第三步:取值

    取值使用 ${正则表达式中引用名称}

     第四步:可在Debug Sampler查看提取的内容

    控制器 => Sampler => Debug Sampler(用来查看正则表达式提取的内容)

    设置完成后,可以在“控制器”上Ctrl+R,运行该模块

    4.复杂JSON取值方法

    如果请求的返回值是简单的JSON类型,则可以使用”JMeter中的正则表达式提取器”;如果返回的JSON类型比较复杂。则需要借用插件来提取自己所需要的值

    JMeter插件(JSON PATH Extractor)我的百度云里有,有需要的可以联系我

    第一步:添加JMeter插件(JSON PATH Extractor)

     

    lib中的三个jar包复制到JMeter安装目录下lib目录下

    accessors-smart-1.1.jar

    json-path-2.2.0.jar

    Json-smart-2.2.1.jar

    ext中的两个jar包复制到JMeter安装目录下lib下的ext目录下

    Jmeter-plugins-json-2.3.jar

    Jmeter-plugins-manager-0.10.jar

    复制完成之后重新启动JMeter,在对应的请求上=》右键,添加=》后置处理器

    出现如下图所示,即插件安装成功

     

    第二步:提取需要的参数

    请求返回数据

    {   "total": 2,

        "rows": [ {     "NO": "A002",

                     "ID": "0e13b9b0081e4db7a06eee700485f9ee",

                     "FILE_ID": "77d7fa6c2891444780c5d8b698ffe0bf"

            },{       "NO": "A001",

                     "ID": "e3d0858d90b84b59b6813b72b89a4ca2",

                     "FILE_ID": "d5c0ede82e0f45339cbe4f8891f6de21"

            }]

    }

     

  • 相关阅读:
    Windows server 2016 解决“无法完成域加入,原因是试图加入的域的SID与本计算机的SID相同。”
    Windows Server 2016 辅助域控制器搭建
    Windows Server 2016 主域控制器搭建
    Net Framework 4.7.2 覆盖 Net Framework 4.5 解决办法
    SQL SERVER 2012更改默认的端口号为1772
    Windows下彻底卸载删除SQL Serever2012
    在Windows Server2016中安装SQL Server2016
    SQL Server 创建索引
    C#控制台或应用程序中两个多个Main()方法的设置
    Icon cache rebuilding with Delphi(Delphi 清除Windows 图标缓存源代码)
  • 原文地址:https://www.cnblogs.com/Z-Queen/p/10608947.html
Copyright © 2011-2022 走看看