【问题标题】:How to relate two variables in JSON POST request如何在 JSON POST 请求中关联两个变量
【发布时间】:2021-11-06 11:32:58
【问题描述】:

我有一个 JMeter 测试场景如下:数百个用户必须登录到一个平台并发送一个包含数百个配置文件的 POST 请求以生成报告。对于数据,我使用了两个 csv 文件。

一个 csv 文件包含 JMeter 将登录并发送 POST 请求以生成报告的用户的数据。它包含以下字段:

userid,  companyid, password

一旦登录,这些用户中的每一个都必须从另一个 csv 文件中选择配置文件,以生成有关这些配置文件的报告。另一个 csv 文件具有以下字段:

profileid, companyid

每个用户只能生成具有相同 companyid 的配置文件的配置文件。

配置文件必须放置在 JSON 请求中的数组中,而数组又位于对象中。重要提示:所有配置文件都必须在一次迭代中放置在数组中。这意味着如果有 1000 个配置文件,则必须同时在阵列上设置它们。

我没能做到:

  1. 弄清楚如何确保对于每个用户,该用户可用的特定配置文件都设置在数组中。

  2. 弄清楚如何在一次迭代中实际插入数组中的值。

有人可以就如何实现这一点提供建议吗?

免责声明:我不懂 Java,前几天才开始使用 JMeter。

【问题讨论】:

    标签: jmeter automated-tests


    【解决方案1】:

    如果不查看您的 CSV 文件结构,很难提供全面的答案,因此我只能提供一般性建议:

    如果您正在查看CSV Data Set Config,请注意它会在每次迭代时读取下一行,如果您需要在单个迭代的范围内读取多行,则需要使用__CSVRead() function 或考虑使用@987654323 @ 用于编写脚本

    【讨论】:

    • 您好 Dimitri,感谢您的回复:我已经重新表述了我的问题,并希望更清楚地说明我的问题。这是新问题的链接,以防您想查看它。非常感谢! stackoverflow.com/questions/69890436/…
    【解决方案2】:

    解决方案 1 您可以使用 CSV Data Set Config 元素从第一个 CSV 文件中读取数据 userid, companyid, password。 添加 CSV 数据集配置元素以读取用户凭据。

    它将为每个线程和每次迭代读取一行。

    现在您有了可用于整个迭代的 companyid。您需要使用第二个 CSV 文件中的 companyid 过滤数据。这可以通过 Groovy 完成(您也可以使用 Java)。

    添加一个 JSR223 采样器以从第二个 CSV 文件中检索 profileid。以下代码演示了将 CSV 文件读入文件列表,然后使用 companyid 过滤行

    log.info("Processing profile")
    
    def lines = new File('company_profiles.csv').readLines()
    def filteredLine=lines.find { it.contains(args[0])}
    def lstRecord = filteredLines.get(currentRecord).split(",")
    vars.put("profileid","${lstRecord[0]}")
    
    SampleResult.setIgnore()
    
    

    注意:companyid 作为参数传递给脚本。请参阅以下突出显示的区域。

    profileid 在脚本vars.put("profileid","${lstRecord[0]}") 中设置为变量。您可以在当前线程的迭代中使用 profileid ${profileid}

    【讨论】:

    • Janesh,谢谢你的回答!我非常感谢您为回答所花费的时间:) 但是,我不知道如何实施您的回答。你能给我一个缓慢的过程吗?非常感谢!!
    • 更新了答案。希望有用。
    猜你喜欢
    • 2014-11-19
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    相关资源
    最近更新 更多