zoukankan      html  css  js  c++  java
  • Jmeter JSON提取器

    此提取器用于提取请求返回结果中的某个值或者某一组值,标准写法为$.key,其中key为返回结果map中的一个键,如果是多层则继续用.key进行即可,如果遇到key的value值为一个List,则使用.key[n],其中n为list中元素的编号,如下使用实例来说明下如何使用;

    image

    Json提取器语法说明

    完整的语法说明详见JsonPath

    如有以下Json返回

    {
        "store": {
            "book": [
                {
                    "category": "reference",
                    "author": "Nigel Rees",
                    "title": "Sayings of the Century",
                    "price": 8.95
                },
                {
                    "category": "fiction",
                    "author": "Evelyn Waugh",
                    "title": "Sword of Honour",
                    "price": 12.99
                },
                {
                    "category": "fiction",
                    "author": "Herman Melville",
                    "title": "Moby Dick",
                    "isbn": "0-553-21311-3",
                    "price": 8.99
                },
                {
                    "category": "fiction",
                    "author": "J. R. R. Tolkien",
                    "title": "The Lord of the Rings",
                    "isbn": "0-395-19395-8",
                    "price": 22.99
                }
            ],
            "bicycle": {
                "color": "red",
                "price": 19.95
            }
        },
        "expensive": 10
    }
    JsonPath 结果
    $.store.book[*].author 全部书的作者
    $..author 所有作者
    $.store.* 店里所有,包括书和自行车
    $.store..price 所有价格
    $..book[2] 第三本书
    $..book[-2] 倒数第二本书
    $..book[0,1] 前两本书
    $..book[:2] 从索引0(含)到索引2(不含)的所有书籍
    $..book[1:2] 从索引1(含)到索引2(不含)的所有书籍
    $..book[-2:]

    最后两本书

    $..book[2:]    从尾部到第二本书
    $..book[?(@.isbn)] 所有带有ISBN编号的书籍
    $.store.book[?(@.price < 10)]

    店里所有标价低于10的书

    $..book[?(@.price <= $['expensive'])] 店内所有价格低于“expensive”的书
    $..book[?(@.author =~ /.*REES/i)] 与正则匹配的所有书籍(忽略大小写)
    $..* 返回Store的所有内容
    $..book.length() 书的数量

    调试方法:

    在查看结果树(View Result Tree)中选择JSON Path Tester,即可展开如下图的右侧内容,输入表达式即可拿来测试书写的Json提取器表达式是否能正常工作:

    image

    从上图的输出可见返回的数组下标从0开始。

    添加JSON提取器,获取所有author

    image

    添加调试取样器调试用,可看到获取到了所有作者的值。通过author_1,....author_22可得到每一个author。

    image

    将获取到每一个用户author循环进行“http请求”查看结果。

    添加循环控制器,设置循环次数:author_matchNr从上面的JSON取样器中匹配到,这里进行变量引用

    image

    在循环控制器之下添加http请求,并做以下设置。

    image

    __counter为jmeter自带的一个计数函数,${__counter(,)}引用这个函数,每运行1次+1,从1开始;
    author_${__counter(,)}运行第1次author_1,运行第2次author_2,以此类推,直到运行到循环次数author_4
    __V为jmeter自带的一个嵌套变量函数,运行第1次author_${__counter(,)}为author_1,${__V(author_${__counter(,)},)}则为${author_1},值Nigel Rees;以此类推,一直循环到${author_4}

    image

    image

  • 相关阅读:
    Yii学习系列:Yii视频讲义——前篇(转)
    Yii框架tips(转)
    如何学习Javascript
    浅谈程序猿简历的写法,你会如何写你的简历呢。(转)
    浅谈程序猿的职业规划,看你如何决定自己的未来吧。(转)
    软件授权协议有什么作用,例如GPL、Apache License、CDDL、EPL这些协议有什么区别?
    开源软件授权协议详解(GPL/MPL/LGPL/BSD/Apache Licence/Creative Commons/MIT)
    [Yii][RBAC]Yii中应用RBAC完全指南
    Yii之权限管理扩展 srbac
    YII 权限管理
  • 原文地址:https://www.cnblogs.com/fanfeng/p/14889828.html
Copyright © 2011-2022 走看看