zoukankan      html  css  js  c++  java
  • 关于jmeter正则表达式的一个实际应用

    接口响应内容如下

    {
        "code": 200,
        "msg": "成功",
        "data": {
            "projectId": 178,
            "type": 5,
            "data": "[{"ioType":1,"type":0,"id":115},
    {"ioType":1,"type":1,"id":1361},
    {"ioType":1,"type":2,"id":1362},
    {"ioType":1,"type":3,"id":1363},
    {"ioType":2,"type":6,"id":1838},
    {"ioType":2,"type":1,"id":1839},
    {"ioType":2,"type":4,"id":1840},
    {"ioType":2,"type":3,"id":1841},
    {"ioType":2,"type":2,"id":1842}]", "current": "1" } }

    本次要提取的是  {"ioType":2,"type":6,"id":1838} 中的 id 值,也就是当前示例中的1838

    开始打算使用json提取器来逐级提取,但是发现内层data的值并不是一个列表,而是一个字符串(列表被一个引号包裹住了),这样就无法使用json提取器了

    所以决定使用正则表示提取器来试试(这里的关键是确保书写的正则表达式是正确的)

    注意⚠️:

    通过观察  {"ioType":2,"type":6,"id":1838} 可以看到每个 前都有一个 

    所以在写表达式时需要转义一下它,不然会识别不出来。。。

    方法也很简单,在 前,再加一个 即可

    这样的话,正则表达式可以如下

    正则表达式:{\"ioType\":2,\"type\":6,\"id\":(d*)}

    因为每个响应中都有【\"ioType\":2,\"type\":6】,所以这里可以写死,然后提取对应的id值即可

    模版:$1$

    因为这个表达式只有一个分组(正则表达式中一个括号表示一个分组),所以这里写1就行,表示引用组1

    ps. 引用组的语法是:$1$引用组1,$2$引用组2。$0$引用整个表达式匹配的内容

    匹配数字:1

    正则表达式匹配数据的所有结果可以看做一个数组,匹配数字即可看做是数组的第几个元素;

    -1表示全部,0随机,1第一个,2第二个,以此类推。若只要获取到匹配的第一个值,则填写1

    要验证正则表达式的提取结果,可以添加一个调试取样器,运行脚本来看下响应结果

    后面接口引用时,可以引用type_id或者type_id_g1

    如果ioType和type中的值不固定,每次请求后都显示随机的的值,那么只能按照列表中每组值的顺序来提取

    通过观察,发现  {"ioType":2,"type":6,"id":1838} 出现在列表中的第5个位置

    所以可以按照如下方式来写正则表达式

     这次结果如下:

  • 相关阅读:
    在宏块级冗余可调的多描述视频编码算法方面取得进展(转载)
    C++单例模式
    C++手动实现库函数
    C#操作java平台生成的公钥
    C++之位操作符
    Windows 8 应用栏
    Windows 8 本地数据存储
    Win8的页面缓存
    操作符sizeof
    three.js结合geoJson绘制中国地图
  • 原文地址:https://www.cnblogs.com/hanmk/p/15088921.html
Copyright © 2011-2022 走看看