jmeter - JMeter - 如何为 REST 服务有效负载发送随机数量的有效负载行?
问题描述
下面的“有效负载”图片显示了 GROUND_SERVICE 的 3 个行项目,所有值,如 SERVICE_TYPE_CODE、ORIG_ZIP、DEST_ZIP、UNITS_SHIPPED、START_DATE 都必须参数化。我不能总是发送 3 个 GROUND_SERVICE 订单项的请求。我需要发送随机数量的 GROUND_SERVICE 行,在这种情况下介于 1 到 3 之间。实际上我将有大约 20 个行项目。如何在参数化 GROUND_SERVICE 元素中的所有值时做到这一点?
收到 DMITRI 的建议后编辑的问题如下:
我认为建议的代码允许我发送随机数量的 GROUND_SERVICE 块,如果这样可以解决我的一半问题。但是,我无法随机化 ORIG_ZIP、UNITS_SHIPPED 等数据元素。它们必须从 CSV 文件中提取。我怎样才能做到这一点?为了清楚起见,我编造了这些数据元素来保护敏感数据。实际上,请求包含不同类型的数据元素以及通过规则引擎的测试数据,因此我必须从 CSV 文件中提取实际数据。
解决方案
- 添加JSR223 PreProcessor作为要参数化的 HTTP 请求采样器的子级
将以下代码放入“脚本”区域:
import groovy.xml.MarkupBuilder import org.apache.commons.lang3.RandomUtils import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy def writer = new StringWriter() def xml = new MarkupBuilder(writer) static def getRandomGroundServices(MarkupBuilder xml) { 1.upto(RandomUtils.nextInt(1, 4), { number -> xml.GROUND_SERVICES() { GROUND_SERVICE() { SERVICE_TYPE_CODE(number + "DAY") ORIG_ZIP(RandomUtils.nextInt(11111, 99999)) UNITS_SHIPPED(RandomUtils.nextInt(1, 10)) START_DATE(new Date().plus(number).format('yyyy-MM-dd')) } } }) }; getRandomGroundServices(xml) vars.put('payload', writer.toString())
就是这样,现在您可以根据
${payload}
需要引用随机有效负载:每次运行请求时,不同数量的
GROUND_SERVICE
元素将使用随机的 UNITS_SHIPPED 和 ORIG_ZIP 发送到后端
参考:
推荐阅读
- java - 为App引擎部署创建.jar后访问spring boot application.properties中提到的配置文件
- reactjs - 向路由器中的组件发送多个道具(React)
- googletest - gtest:如何测试接口是否定义?
- python - 如何在使用 XGBoost 学习排名时保留 id 以供以后预测
- python - 我的输入 npy 文件大小为 (101,150),我的 (目标)label npy 文件大小为 (801,4)。我应该如何将这种类型的数据提供给神经网络?
- python - SQLAlchemy 中带有 CURRENT_DATE 函数的 SQL 语句 DATE_PART
- oracle - oracle如何生成随机字符
- flask - 如何将数据传递到烧瓶中的 wtforms QuerySelectField
- swift - 检查变量是否已更改,然后更新形状 Swift Xcode
- java - 如何在 Java 中同时连接 HTTP 和 HTTPS