【问题标题】:JMeter - Cannot Get Dynamics CSV Values Into My JsonBuilder Request BodyJMeter - 无法将动态 CSV 值获取到我的 JsonBuilder 请求正文中
【发布时间】:2022-01-26 21:47:00
【问题描述】:

我昨天问了一个关于在 JMeter 上使用预处理器创建动态请求正文的问题。感谢 Dmitri T,我几乎得到了我想要的。

这里的老问题:JMeter Creating a Pre-Processor that will generate a request body based on a user defined variable


但现在,我无法将 CSV 文件中的动态值获取到请求正文中。

MY CSV 文件示例数据:

Reading CSV successfully finished, 20 records found:
${id} = 1000011
${email} = a1000011@smartmessage.com
------------
${id} = 1000012
${email} = a1000012@smartmessage.com
------------
${id} = 1000013
${email} = a1000013@smartmessage.com

生成请求正文的预处理器:

    import groovy.json.JsonBuilder;
    
    def payload = [:]
    def X = 10 // read user input here somehow
    
    payload.put('message_job_id', '28b0a005-9ef1-475c-b33c-ade900f19e4c')
    payload.put('campaign_group', 'Entegrasyon')
    payload.put('template_id', 'cf585c8c-c675-40d2-b88a-ade900c898d5')
    
    def recipient_list = []
    1.upto(X, { x ->
        def recipient = [:]
        recipient.put('customer_id', vars.get('id') + x)
        def target = [:]
        def address = ['address': vars.get('email' + x)]
        target.put('target', address)
        recipient.put('target', target)
        recipient_list.add(recipient)
    })
    
    payload.put('recipient_list', recipient_list)
    
    
    vars.put('payload', new groovy.json.JsonBuilder(payload).toPrettyString())

我在查看结果树中生成的请求正文:

  {
        "message_job_id": "28b0a005-9ef1-475c-b33c-ade900f19e4c",
        "campaign_group": "Entegrasyon",
        "template_id": "cf585c8c-c675-40d2-b88a-ade900c898d5",
        "recipient_list": [
            {
                "customer_id": "10000111",
                "target": {
                    "target": {
                        "address": null
                    }
                }
            },
            {
                "customer_id": "10000112",
                "target": {
                    "target": {
                        "address": null
                    }
                }
            },
            {
                "customer_id": "10000113",
                "target": {
                    "target": {
                        "address": null
                    }
                }
            },
            {
                "customer_id": "10000114",
                "target": {
                    "target": {
                        "address": null
                    }
                }
            },
            {
                "customer_id": "10000115",
                "target": {
                    "target": {
                        "address": null
                    }
                }
            },
            {
                "customer_id": "10000116",
                "target": {
                    "target": {
                        "address": null
                    }
                }
            },
            {
                "customer_id": "10000117",
                "target": {
                    "target": {
                        "address": null
                    }
                }
            },
            {
                "customer_id": "10000118",
                "target": {
                    "target": {
                        "address": null
                    }
                }
            },
            {
                "customer_id": "10000119",
                "target": {
                    "target": {
                        "address": null
                    }
                }
            },
            {
                "customer_id": "100001110",
                "target": {
                    "target": {
                        "address": null
                    }
                }
            }
        ]
    }

如您所见,地址键始终具有空值,但我想用 CSV 文件中的电子邮件变量填充此键。

【问题讨论】:

    标签: jmeter jsonbuilder


    【解决方案1】:

    如果您需要从 CSV 文件构建请求正文并在“一次”中从多行发送数据 - 您将无法使用 CSV Data Set Config 及其衍生工具来实现此目的,因为 CSV 数据集配置会读取下一行每个用户的每次迭代。

    如果您需要在单次迭代的范围内读取多行 - 您需要切换到 __CSVRead() functionread the data from the CSV file directly in Groovy

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      相关资源
      最近更新 更多