我正在Scala中创建一个加特林负载测试,并且希望创建一个具有属性的HTTP POST请求。
val getServiceCall = http("get service call")
.post("/MyService")
.headers(header)
.body(ElFileBody("templates/GetServiceCallRqTemplate.xml"))
.check(status.is(200))
这是我的xml中的代码段:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<pus:GetServiceCallRq>
<com:header>
<com:type>pus:GetServiceCallRq</com:type>
<com:timestamp>timestamp</com:timestamp>
<com:source>source</com:source>
<com:destination>destination</com:destination>
<com:serverNode>serverNode</com:serverNode>
</com:header>
<pus:body>
<pus:reference>${reference}</pus:reference>
....
我想通过代码中创建的变量而不是csv文件传递${reference}
属性。
如何将其作为请求参数传递?
答案 0 :(得分:1)
使用供稿器(csv文件)不是将值添加到会话参数中的唯一方法。
您还可以通过会话操作手动设置值
exec(session => session.set("reference", "ref0001"))
或通过检查较早的请求(无论响应中'ref'键中的内容如何保存到$ {reference}变量
exec(
http("setupReq")
.get("someURL")
.check(
jsonPath("$.ref").saveAs("reference")
)
)
甚至创建自己的自定义Feeder(例如,如果您只想生成随机引用)
//somewhere at the top of your scala class
private val refs = Iterator.continually(
Map("reference" -> (Random.alphanumeric take 10 mkString).toUpperCase())
)
//then later in your scenario...
.feed(refs) //will put a new random string into ${reference}
//then make your "get service call" request