下面的“有效负载”图片显示了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文件中提取实际数据。
答案 0 :(得分:0)
将以下代码放入“脚本”区域:
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}
:
每次您运行请求时,都会使用随机的UNITS_SHIPPED和ORIG_ZIP将不同数量的GROUND_SERVICE
元素发送到后端
参考文献: