json - Gatling JSON Feeder 独特的 POST 正文
问题描述
我有一个包含 JSON 数组的 JSON 文件
测试.json
[
{ "Name": "Bob" },
{ "Age": "37" },
{ "DOB": "12/01/1985"}
]
我想针对端点测试 JSON 数组中的每个相应元素,以观察系统针对唯一有效负载的性能
目前我有
测试服务.scala
val payload = jsonFile("test.json").circular
val httpProtocol = http
.baseURL("http://test.com")
.headers(Map("Content-Type" -> "application/json"))
val scn = scenario("Test Service")
.feed(payload)
.exec(http("test_request")
.post("/v1/test")
.queryParam("key", "123")
.body()
我无法将有效负载中的每个子节点.body()
作为 JSON传递
Gatling Docs 说 JSON Feeder 将数组的每个元素加载到记录集合中
https://gatling.io/docs/2.3/session/feeder/
IE:
record1: Map("id" -> 19434, "foo" -> 1)
record2: Map("id" -> 19435, "foo" -> 2)
并将身体设置为.body(StringBody("""[{"id": ${id}}]"""))
问题是我有不同的密钥(姓名、年龄、出生日期),我希望每个密钥都发送不同的请求。
.body(StringBody("""[{"KEY_NAME_HERE": ${KEY_NAME_HERE}}]"""))
我如何实现这一目标?
解决方案
这就是我正在做的事情:-
company_users.json.json
[
{
"env":"dev",
"userName": "a@test.com",
"password": "Qwerty!12345678"
},
{
"env":"sit",
"userName": "b@test.com",
"password": "Qwerty!12345678"
},
{
"env":"uat",
"userName": "c@test.com",
"password": "Qwerty!12345678"
},
{
"env":"prod",
"userName": "d@test.com",
"password": "Qwerty!12345678"
}
]
工作代码片段:
val jsonFileFeederCompany = jsonFile("data/company_users.json").circular
val get_company_user_token = http("Get Company Tokens")
.post(gwt_token_url)
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.body(StringBody(
"""{
"env": "${env}",
"userName": "${userName}",
"password": "${password}"
}"""
)).asJson
.check(status.is(200))
.check(jsonPath("$.jwtToken").saveAs("jwtToken"))
val getCompanyUsersGwtToken = scenario("Create Company GWT token Scenario")
.feed(GetTokenRequest.jsonFileFeederCompany)
.exec(GetTokenRequest.get_company_user_token).exitHereIfFailed
这将从 json 读取每个数组 [位置] 并替换请求中的值,以从不同的环境中获取安全令牌。
希望这可以帮助。
问候, 维克拉姆·帕塔尼亚
推荐阅读
- naming-conventions - “懒惰”在编程意义上是什么意思?
- powershell - 在 PowerShell 中过滤重复消息?
- angular - 如何在 Ionic 3 中发送电子邮件(不使用电子邮件编辑器)
- scala - 如何获取传递给 Scala 宏的参数的运行时值?
- websphere - mod_was_ap22_http.so 在 Websphere 9 上不可用?
- python - keras 总是直线预测
- php - 从未知格式/Date(1576648800000)/在php中格式化日期
- python - python axes.ravel() IndexError:数组索引过多
- python - Python - 比较两个数据帧之间的范围
- python - 从python中的文本文件导入输入