当前位置: 首页 > 面试题库 >

Jmeter动态生成请求的JSON负载

龙承德
2023-03-14
问题内容

我有一个Jmeter测试计划,希望我的HttpSampler发送一个发布请求。

请求的正文应包含Json,如下所示:

{
  "productIds" : [
    "p1",
    "p2",
    ...
  ]
}

我已经设置了一个随机变量生成器,该变量生成器在每次调用时都返回格式正确的productId。我想做的是通过直接在请求主体中填充从生成器获取的随机pid的productId来生成有效负载。像这样(假设***是脚本转义符):

{
  "productIds" : [
     ***
       for i in (1, $productsCount) {
         write("\"$randomPid\"\n")
       }
     ***
  ]
}

可能吗?如果是,怎么办?如果没有,您将如何处理该问题?

谢谢!


问题答案:
  1. 将Beanshell PreProcessor添加为要参数化的请求的子代
  2. 将以下代码放入预处理器的“脚本”区域:
        StringBuilder result = new StringBuilder();
    String newline = System.getProperty("line.separator");
    int max = Integer.parseInt(Parameters);
    Random random = new Random();

    result.append("{");
    result.append("\"productIds\" : [");
    result.append(newline);
    for (int i = 1; i < max; i++) {
        result.append("\"").append(random.nextInt()).append("\",");
        result.append(newline);
    }
    result.append("]");
    result.append(newline);
    result.append("}");

    vars.put("json", result.toString());
  1. 将您的$ {productsCount}值放入“ Parameters”节中
  2. 根据${json}需要引用生成的有效负载

请参阅如何使用BeanShell:JMeter最喜欢的内置组件指南,以获取有关Apache JMeter中Beanshell脚本的更多详细信息。



 类似资料:
  • 我已经使用作为jmeter插件提供的吞吐量整形仪创建了一个最大峰值负载为5000 rpm的概要文件。 当我添加“每秒事务数”作为侦听器以分析每秒请求时。它没有显示5000rpm的峰值负载。 每秒事务侦听器是否显示吞吐量成形仪生成请求的图,或针对任何目标服务器生成的请求的实际执行图。 如何确认请求的生成达到5000 rpm的最大峰值负载?目前,我正在使用http采样器生成请求。

  • Python中发送post请求,构建请求体的时候请求负载如下, 关键的地方就是那个value的值,直接发送那个value可以,我想要根据变量修改里边的信息。用的方法是 接口没报错,但是后端处理后是海外、海外、详细地址.......,我猜应该是分割字符串的问题,我直接发送原本的写死的串就没问题。求解。 用json.dumps转整个结构体,然后发送直接报500,根据ChatGPT的思路只将这个键的值改

  • 我是 wiremock 的新手,在我的Spring启动集成测试中使用 wiremock 来模拟其中一个外部 http 调用。 我的json请求体包含两个动态属性,所有其他字段都可以设置,而在请求中只有两个字段值无法设置,因为它们是动态值。 由于这些本质上是动态的,我的意思是属性的值是随机自动生成的值。有没有办法忽略这些属性并保持所有属性无论如何都匹配。 我知道忽略可用于额外的字段和数组顺序 tru

  • 本文向大家介绍ExtJs动态生成treepanel的Json格式,包括了ExtJs动态生成treepanel的Json格式的使用技巧和注意事项,需要的朋友参考一下 在节点中加上"checked"属性,会自动生成checkbox。 获取选中节点 Json格式如下: 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 我试图使用csv文件中的数据构建随机json请求。我已经定义了我的目标。场景功能如下 但是当我将日志级别设置为跟踪时,我看到所有请求都具有相同的值。我错过了什么吗?

  • 我正在测试REST API。每个API使用不同类型的JSON负载。我不想手动填写所有输入。因此,我希望动态生成JSON(例如,从文本文件读取值并填写JSON结构),然后将生成的JSON作为请求体在API中传递。 最好的方法是什么?对工具或插件有什么建议吗? 附言:嵌套的JSON结构非常复杂。