Gatling的进阶三

上一篇 / 下一篇  2013-10-11 14:48:49 / 个人分类:测试

1. checks

check是Gatling非常重要的一个特性,用来判断是场景否真的执行成功了

.exec(http("request_1")
      .get("/")
      .headers(headers_1)
      .check(status.is(302)) // 我们期望返回的status是302,所以check
  )

或者
.check(regex("""<td class="number">ACC${account_id}</td>""").exists)
判断是否在返回的response中包含正则表达式所匹配的字符串

check还能够在执行过程中将动态的数据保存下来,例如:
check(
  regex("""<a href="/excilys-bank-web/private/bank/account/(ACC[0-9]*)/operations.html">""")
  .saveAs("acc1")
)
将匹配的数据存放到acc1中,以便在下面的场景中进行使用

2. session

当模拟器运行时,每个用户拥有自己独立的session。我们可以利用session做点有益的活动:

例如上例中,我们使用的account id,每次都需要从feeder的读取中获得,而且必须事前指定,不够动态。实际上,我们可以从过程中直接获得:

check(
regex("""<td class="number">ACC(\d+)</td>""")
  .saveAs("account_id")
)
然后就可以在接下来的scenario中使用${account_id}

3. 条件判断

你可能需要根据不同的状态执行不同的场景,这时候就需要条件判断
.doIf("${username}", "user7") {
    exec(
      http("request_9")
        ...
    )
    .pause(0 milliseconds, 100 milliseconds)
    .exec(
      http("request_10")
        ...
    )
}

通过doIf,只有username是user7的模拟用户,才会执行下面的操作

还可以使用更高级的scala功能:
.doIf(session => session.getAttribute("username") != "user7") {
  exec
    ...
}



TAG:

 

评分:0

我来说两句

日历

« 2024-05-01  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 151455
  • 日志数: 185
  • 文件数: 6
  • 建立时间: 2007-08-06
  • 更新时间: 2015-01-06

RSS订阅

Open Toolbar