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
    ...
}

最新文章

  1. business knowledge
  2. .NET C# Tostring() format 格式化字符串大全
  3. Django中csrf错误
  4. 基于CCS3.3平台搭建DSP/BIOS系统
  5. 将TP引擎改为smarty引擎
  6. Js练习题之字符串转驼峰
  7. requestscope.contextpath和&lt;%=request.getContextPath()%&gt;有何区别?(待解答)
  8. python3 pyqt5 和eric5配置教程
  9. YII框架开发一个项目的通用目录结构
  10. 字符串编码---hash函数的应用
  11. java操作mongodb——插入数据
  12. JavaScript入门(一)
  13. 控制结构(10) 指令序列(opcode)
  14. 言传菜单JSON数据
  15. C语言转义字符基础总结
  16. Mac下替代Total Commander的工具推荐
  17. LOJ#3048. 「十二省联考 2019」异或粽子(trie树+堆)
  18. OpenStack与OpenDaylight的对接过程
  19. 剑指offer:栈的压入、弹出序列
  20. Linux中的共享链接库shared libraries

热门文章

  1. urllib2
  2. CentOS快速搭建subversion服务器
  3. Centos Mysql 升级
  4. 【web】 亿级Web系统搭建——单机到分布式集群
  5. [tomcat] tomcat+nginx 负载均衡配置
  6. BouncyCastle产生一个PKCS#12规范的PFX/p12证书
  7. centos 安装sphinx
  8. 清理java环境
  9. nova分析(7)—— nova-scheduler
  10. Linux命令之at