JMeter动态请求

JMeter动态请求,jmeter,Jmeter,我需要使用从csv读取值的标题项行测试web服务 <urn:Requisition_BudgetReqExportHeaderDetails_Item> <!--Zero or more repetitions:--> <urn:item> <urn:CompanyCode> <urn:UniqueName>?</urn:UniqueName>

我需要使用从csv读取值的标题项行测试web服务

<urn:Requisition_BudgetReqExportHeaderDetails_Item>
        <!--Zero or more repetitions:-->
        <urn:item>
           <urn:CompanyCode>
              <urn:UniqueName>?</urn:UniqueName>
           </urn:CompanyCode>
           <urn:ERPRequisitionID>?</urn:ERPRequisitionID>
           <urn:HoldTillDate>?</urn:HoldTillDate>
           <urn:IsServiceRequisition>?</urn:IsServiceRequisition>
           <urn:Name>?</urn:Name>
        </urn:item>
</urn:Requisition_BudgetReqExportHeaderDetails_Item>

?
?
?
?
?
我可以从CSV文件中读取值,但此web服务很复杂,项目可能为1或多于2

如何处理此web服务请求?

您可以使用以下方法:

  • 将JSR223预处理器添加为请求的子级
  • 将生成XML负载的代码放入“脚本”区域,示例如下:

    def writer = new StringWriter()
    def xml = new groovy.xml.MarkupBuilder(writer) 
    
    xml.records() { 
        car(name:'HSV Maloo', make:'Holden', year:2006) {
            country('Australia')
            record(type:'speed', 'Production Pickup Truck with speed of 271kph')
        }
        car(name:'Royale', make:'Bugatti', year:1931) {
            country('France')
            record(type:'price', 'Most Valuable Car at $15 million')
        }
    }
    
    sampler.addNonEncodedArgument("", writer.toString(), "")
    
    修改它以符合您的要求

  • 当您运行测试时,JSR223预处理器将生成请求主体并在采样器中进行设置
  • 参考资料:

    • sampler
      -HTTPSamplerProxy类的简写,有关所有可用的方法和字段,请参阅JavaDoc
    • -了解如何使用Groovy语言创建XML数据
    • -介绍JMeter中的Groovy脚本

    谢谢您的回答。如何使用csv值?您有代表类实例的
    vars
    速记,因此如果您想使用
    ${foo}
    变量,它应该类似于
    def myFooVariable=vars.get('foo')