【问题标题】:Need to form custom request in jmeter需要在jmeter中形成自定义请求
【发布时间】:2021-02-16 19:13:54
【问题描述】:

我需要在 jmeter 中创建一个自定义请求,格式如下:

{
"items": [
        {
            "id": "1",
            "productId": 1234
         }
        {
            "id": "2",
            "productId": 1218
        }
....
}

在这里,我必须生成一些介于 10-15 之间的随机数并创建 id 块(基于随机数)。 有人可以帮助我如何相应地形成请求并在 jmeter 中实现这一点。

提前致谢。

【问题讨论】:

    标签: jmeter custom-code


    【解决方案1】:
    1. JSR223 PreProcessor 添加为需要发送此生成值的请求的子项

    2. 将以下代码放入“脚本”区域

      import groovy.json.JsonBuilder
      import org.apache.commons.lang3.RandomUtils
      
      
      def items = []
      def itemsNo = RandomUtils.nextInt(10, 16)
      
      1.upto(itemsNo) { id ->
          def productId = RandomUtils.nextInt(1111, 10000)
          def item = [:]
          item.put('id', id as String)
          item.put('productId', productId)
          items.add(item)
      }
      
      def payload = new JsonBuilder([items: items]).toPrettyString()
      vars.put('payload',payload)
      
    3. 使用${payload}JMeter Variable在需要引用生成的JSON的地方

    演示:

    更多信息:

    【讨论】:

    • 嗨 Dmitri,我们可以使用 csv 数据集配置从该文件中选择产品 ID 吗?如果是,那么如何在您的自定义代码中使用它?
    • 尝试在您的自定义代码中使用 csv 数据集变量名称。但它在同一个请求中选择了相同的产品 id 值。修改后的代码: 1.upto(itemsNo) { id -> def productID = ${prodid} def item = [:] item.put('id', id as String) item.put('productID', productID) items。 add(item) } 示例输出: { "items": [ { "id": "1", "productID": 1919 }, { "id": "2", "productID": 1919 } ] }
    • 不要将 JMeter Functions or Variables 内联到 groovy 脚本中,只会缓存和使用第一次出现的情况,请将您的 ${prodid} 替换为 vars.get('prodid'}vars 代表JMeterVariables 类实例,有关详细信息,请参阅Top 8 JMeter Java Classes You Should Be Using with Groovy 文章。
    • 我尝试使用vars.get('prodid'),但请求中的值仍然相同。 { "items": [ { "id": "1", "productID": "1919" }, { "id": "2", "productID": "1919" } ] }
    • CSV Data Set Config 的情况下,JMeter 为每次迭代读取每个用户的下一个值,如果您想一次性读取所有值,则需要在 Groovy 中读取文件,例如:@ 987654338@。更多信息:The Groovy Templates Cheat Sheet for JMeter
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 2013-08-22
    • 2017-11-08
    • 2019-08-01
    相关资源
    最近更新 更多