Json提取唯一数据-Jmeter

Json提取唯一数据-Jmeter,jmeter,jmeter-plugins,Jmeter,Jmeter Plugins,我的线程组中有一组请求,其中第一个请求将为第二个请求提供输入。我使用json提取器(匹配号0)从列表中提取值。我希望确保在线程1中提取的相同数据不会在后续线程运行中提取。你能建议如何处理这个问题吗。按照 如果JSON路径查询导致许多结果,您可以选择提取哪一个作为变量: 0:表示随机(默认值) “随机”不能保证唯一性,所以如果您需要数据是唯一的-考虑提供一个递增的值给这个“匹配no”字段。 设置示例: 给定以下JSON { "store": { &quo

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

按照

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

0
:表示随机(默认值)

“随机”不能保证唯一性,所以如果您需要数据是唯一的-考虑提供一个递增的值给这个“匹配no”字段。 设置示例:

  • 给定以下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
    }
    
  • 假设您想使用唯一的书名,即

    • 世纪格言
      -第一次迭代
    • 荣誉之剑
      -第二次迭代
    • 等等
  • 将“匹配否”字段值修改为:

    ${__intSum(${__jm__Thread Group__idx},1,)}
    
    其中,
    \uuuuujm\uuuuu线程组\uuuuu idx
    是一个预定义的可用变量,因为它返回当前迭代,并且是一个JMeter函数,它将
    1
    添加到迭代数中(因为它是基于零的)

    完整的JSON提取器配置如下:

  • 基本上就是这样,现在您有信心为每个线程组迭代提取新值,可以使用监听器进行检查


  • 您好,感谢您的指导,我尝试了您提到的步骤,得到了以下错误:error o.a.j.t.JMeterThread:error when processing sampler:“Debug sampler”。java.lang.NumberFormatException:用于输入字符串:java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)~[?:1.8.0µ]at java.lang.Integer.parseInt(Integer.java:569)~[?:1.8.0181]at java.lang.Integer.parseInt(Integer.java:615)~[?:1.8.0181]。我只使用Jmeter 4.0线程组的名称是什么?如果它与
    线程组不同
    您需要修改变量,如
    ${{uuuuujm\uuuuu put-your-Thread-Group-name-here\uuuuu idx}
    我能够修复它。再次感谢您的支持!该逻辑适用于循环计数,但不适用于线程数。如果我有5个线程和一个循环计数,那么逻辑的工作原理与匹配号1相同