【发布时间】:2017-04-11 23:40:38
【问题描述】:
我已经编写了 2 套加特林代码。我在示例 1 中的用例是拨打电话。提取一个值。进行 get 调用并在标头中使用提取的值。
我在示例 2 中的用例是进行 post 调用,提取值,使用 cookie 中提取的值进行 get 调用。
示例 1
val login = http("Login")
.post("login")
.body(StringBody("""{"username": "foo", "password": "bar"}""")).asJSON
.check(status.is(200), jsonPath("$..response.id").ofType[String].saveAs("id"))
val get = http("get")
.get("foo")
.header("token", "$id")
.check(status.is(200), jsonPath("$..response").exists)
var id = ""
val scn = scenario("scenario")
.exec(login)
.exec(session => {
id = session("id").as[String].trim
println("+++++++" + id)
session}
)
.pause(3)
.exec(get)
当我运行此代码时,我看到上面的打印语句打印了正确的 ID。由于未正确设置 ID,服务器在 get 调用中抛出 403。如果我获取任何打印的值,然后远程$id 并用它替换它。测试正确运行。
那么如何访问保存的变量呢?
示例 2
val login = http("Login")
.post("login")
.body(StringBody("""{"username": "foo", "password": "bar"}""")).asJSON
.check(status.is(200), jsonPath("$..response.id").ofType[String].saveAs("id"))
val get = http("get")
.get("foo")
.check(status.is(200), jsonPath("$..response").exists)
val testCookie = scenario("test-cookie")
.exec(login)
.pause(3)
.exec(addCookie(Cookie("foo_cookie", "$id")))
.exec(get)
这里的值也没有成功提取,我在运行它时得到 403,因为“foo_cookie”设置不正确,如果找不到 cookie,服务器将抛出 403。 (在邮递员中,我可以通过正确指定 cookie 来进行相同的调用)
【问题讨论】: