scala - 使用 session.set 在 Gatling Body 中传递今天的日期但没有成功
问题描述
我正在尝试使用 session.set 在 Gatling Body 中传递今天的日期,但没有成功
我在下面的代码中设置了使用 joda-time( https://www.joda.org/joda-time/ ) timestampfeeder 变量
class gamekeeper extends BaseSimulation {
val timestampFeeder: String = DateTimeFormat.forPattern("yyyy-MM-dd").print(DateTime.now())
exec { session => session.set( "TimestampFeeder", timestampFeeder )}
val createPrivateEvent ={
exec(
http("Create Event As WER")
.post("https://api.cloud/" + {Env} + "/silve-griffin-service/graphql")
.headers(header)
.body(ElFileBody("<filename>"))
.check(status.in(200,201))
.check(bodyString.saveAs("EventAsWER_Response"))
.check(jsonPath(path="$.data.createEvent.id")
.saveAs(key="EventId")
)
)
.exec { session => session.set("NEW_ID", session("EventId").as[String]) }
.exec{session=>println(session);session}
//.pause(40,50)
}
val scenario4 = scenario("Full GameKeeper tests“)
.exec(createPrivateEvent)
setUp(
scenario4.inject(
constantConcurrentUsers(userCount) during(testDuration))
.protocols(httpProtocol)
)
.maxDuration(testDuration)
}
这里是 createeventasWERwithcurrentdatetime.txt 的内容
{
"query": "mutation createEvent($input: CreateEventInput!) {\n createEvent(input: $input) {\n ...EventFields\n __typename\n }\n}\n\nfragment EventFields on Event {\n id\n status\n title\n format\n limitedSet\n rulesEnforcementLevel\n pairingType\n entryFee {\n amount\n currency\n __typename\n }\n venue {\n id\n name\n latitude\n longitude\n address\n timeZone\n phoneNumber\n emailAddress\n __typename\n }\n capacity\n description\n scheduledStartTime\n estimatedEndTime\n latitude\n longitude\n address\n timeZone\n phoneNumber\n emailAddress\n shortCode\n __typename\n}",
"variables": {
"input": {
"organizationId": "14540",
"latitude": 47.66499,
"longitude": -122.38043,
"phoneNumber": "206-523-9605",
"emailAddress": "test@gameot.com",
"title": "PerfTestServicesEvent",
"format": "DRAFT",
"pairingType":"SWISS",
"limitedSet": "CORE2020",
"rulesEnforcementLevel": "CASUAL",
"entryFeeAmount": 500,
"entryFeeCurrency": "USD",
"venueId": null,
"capacity": 8,
"description": "test",
"timeZone": "America/Los_Angeles",
"scheduledStartTime": ${TimestampFeeder},
"estimatedEndTime": "2020-02-15T16:00Z"
}
}
}
似乎值替换没有成功,为什么 session.set 无法替换 TimestampFeeder 的值
解决方案
您的变量设置不起作用的原因是运行该会话函数的 exec 没有被其他任何东西链接或调用 - 它只是在 gamekeeper 类的中间定义。
您似乎也对馈线感到困惑 - 除非您使用此名称的 gatling 构造,否则最好将其称为其他名称。
您可以通过设置日期并将其包含在场景开始时的会话功能轻松完成此工作。
val scenario4 = scenario("Full GameKeeper tests“)
.exec(session => session.set("TimestampFeeder",DateTimeFormat.forPattern("yyyy-MM-dd").print(DateTime.now())
.exec(createPrivateEvent)
我认为您不能使用现有的 TimestampFeeder val,因为它只会在运行开始时设置一次 - 如果您想以这种方式构造事物,则必须使其成为一个函数。
推荐阅读
- asp.net-core - 为什么 CSP 在 .net core 和 Angular App 中不起作用?
- python - 如何将字符串和数字列表转换为在python中浮动?
- python - open 属性不适用于 sqlite3dbm
- jquery - 如何在 Django 中从 request.POST 中检索表单数据
- javascript - 将道具从功能组件传递到功能组件时遇到问题
- cas - 如果服务器重新启动,CAS 属性释放同意将被重置
- 3d - 如何计算 3-D 空间中点三角形交点的 y 位置(高度)?
- stripe-payments - 想要使用 Stripe 向另一个银行账户付款
- c++ - 我们如何使用受 TDQM 启发的库在 C++ 中获得并行 for 循环的进度条?
- php - 有人可以帮我从 URL http://localhost/example/#contact 中的#contact 中删除 #