• 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

  • 相关阅读:
    (原创)SOPC中SDRAM controller 的Timing配置
    (原创)电子专业词汇集
    verilog的$dumpfile和$dumpvar系统任务详解
    一定要确保自己代码的正确性
    记录一些 Latex 的技巧
    ASP.NET 2.0随机读取Access记录
    ASP.NET中使用javascript(2)
    ASP.NET中使用javascript(1)
    电信屏蔽eMule了吗
    Ajax.net里ModalPopupExtender控件和Dropdownlist的问题
  • 原文地址:https://www.cnblogs.com/fanfeng/p/14889828.html
Copyright © 2020-2023  润新知