{"customerId"=>"900", "assetId"=>"NN_18_144", "employee"=>"", "visible"=>false,
"GenerationDate"=>"2012-09-21T09:41:39Z", "index"=>52, "Category"=>2...}
这是一条线的一个对象。我正在使用JMeter的JMS发布者按顺序读取这些行:
${_StringFromFile(${PATH_TO_DATA_FILES}scenario_9.json)}
来自每个包含不同场景。
我需要做的是读取文件并用50,000个非顺序预生成字符串的列表中的随机选择值替换assetId的值(我不可能为每个assetId创建一个单独的文件,如这将涉及在50,000个文件中乱丢负载注入器并在JMeter中为每个文件配置一个线程组。以编程方式,执行替换是一件微不足道的事情,但是在JMeter中动态执行它并不是那么简单。
通常情况下,我认为这是一个有趣的技术挑战,并花了几天的时间来解决它,但我只有周末,我怀疑我会在办公室过夜睡觉。
有人可以帮帮我吗?
感谢。
答案 0 :(得分:1)
要阅读资产,请使用CSV Data SetConfig,我认为assetId将是变量名称。
修改表达式:
${_StringFromFile(${PATH_TO_DATA_FILES}scenario_9.json, lineToSubstitute)}
要进行替换,请添加Beanshell sampler或JSR223_Sampler J(使用groovy)并对替换进行编码:
String assetId = vars.get("assetId");
String lineToSubstitute = vars.get("lineToSubstitute");
String lineSubstituted = ....;
vars.put("lineSubstituted", lineSubstituted);
答案 1 :(得分:1)
如果您的JSON正文总是相同或者您的变化很小,那么您应该:
使用带有RAW POST Body的HTTP采样器
将JSON正文放入资产ID的变量
将资产ID放入CSV数据集配置
避免使用$ {_ StringFromFile},因为它有成本。
如果您需要编写脚本,请在外部文件+缓存中使用带有脚本的JSR223后处理器(自2.8起可用),以便编译脚本。