Json提取唯一数据-Jmeter

时间:2019-03-18 18:26:07

标签: jmeter jmeter-plugins

我的线程组中有一组请求,其中第一个请求将为第二个请求提供输入。我正在使用json提取器(匹配编号0)从列表中提取值。我想确保在后续线程运行中不会提取线程1中提取的相同数据。你能建议如何处理吗?

1 个答案:

答案 0 :(得分:1)

按照JSON Extractor documentation

  

如果JSON Path查询导致许多结果,则可以选择提取哪个作为变量:

     

0:表示随机(默认值)

“随机”不保证唯一性,因此,如果您需要数据唯一,请考虑为该“匹配编号”字段提供递增的值。

示例设置:

  1. 给出以下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
    }
    
  2. 假设您要使用唯一的书名,即

    • Sayings of the Century-第一次迭代
    • Sword of Honour-第二次迭代
  3. 修改“匹配编号”字段值,使其看起来像这样:

    ${__intSum(${__jm__Thread Group__idx},1,)}
    

    其中__jm__Thread Group__idx是一个预定义变量,因为JMeter 4.0返回当前的Thread Group迭代,而__intSum()是JMeter函数,它将1添加到迭代次数(因为它是从零开始的)

    完整的JSON提取器配置类似于:

    enter image description here

  4. 基本上就是这样,现在您可以放心,每次线程组迭代都会获取新值,可以使用View Results Tree侦听器进行检查。

    enter image description here