• 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"

            }]

    }

     

  • 相关阅读:
    IOS RunLoop理解(参考YYKit)
    与个推人员的沟通
    idea报错:找不到或无法加载主类
    linux couldnt resolve host mirrors.aliyun.com解决方法
    【Linux】简单明了查看内存使用和ubuntu的版本号及位数
    【Linux】scp“免密” 远程copy较多文件
    【Repo】推送一个已有的代码到新的 gerrit 服务器
    Android之Monkey全参数(包含隐藏参数)
    Android系统adb命令查看CPU与内存使用率
    adb 命令连接指定设备
  • 原文地址:https://www.cnblogs.com/Z-Queen/p/10608947.html
Copyright © 2020-2023  润新知