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

Gatling的进阶三的更多相关文章

  1. Java进阶(三十九)Java集合类的排序,查找,替换操作

    Java进阶(三十九)Java集合类的排序,查找,替换操作 前言 在Java方向校招过程中,经常会遇到将输入转换为数组的情况,而我们通常使用ArrayList来表示动态数组.获取到ArrayList对 ...

  2. Java进阶(三十八)快速排序

    Java进阶(三十八)快速排序 前言 有没有既不浪费空间又可以快一点的排序算法呢?那就是"快速排序"啦!光听这个名字是不是就觉得很高端呢. 假设我们现在对"6 1 2 7 ...

  3. Java进阶(三十七)java 自动装箱与拆箱

    Java进阶(三十七)java 自动装箱与拆箱 前言 这个是jdk1.5以后才引入的新的内容.java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装称为装箱,解包装称为 ...

  4. Java进阶(三十六)深入理解Java的接口和抽象类

    Java进阶(三十六)深入理解Java的接口和抽象类 前言 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太 ...

  5. Java进阶(三十五)java int与integer的区别

    Java进阶(三十五)java int与Integer的区别 前言 int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而Integer是对象 ...

  6. Java进阶(三十四)Integer与int的种种比较你知道多少?

    Java进阶(三十四)Integer与int的种种比较你知道多少? 前言 如果面试官问Integer与int的区别:估计大多数人只会说到两点:Ingeter是int的包装类,注意是一个类:int的初值 ...

  7. J2EE进阶(三)struts2 <s:action>标签的用法

    J2EE进阶(三)struts2 <s:action>标签的用法 前言 使用action标签,可以允许在jsp页面中直接调用Action,(类似AJAX页面调用)在调用Action时候,可 ...

  8. Java进阶(三十二) HttpClient使用详解

    Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们 ...

  9. Java进阶(三十一) Web服务调用

    Java进阶(三十一) Web服务调用 前言 有朋友问了一个问题:如何调用已知的音乐服务接口,服务文档如下: https://www.evernote.com/shard/s744/sh/c37cd5 ...

随机推荐

  1. C++运算符重载详解

    1.什么是运算符重载 运算符重载是一种函数重载. 运算符函数的格式:operatorop(argument-list)例如,operator+()重载+运算符.其中的op,必须是有效的C++运算符,如 ...

  2. mac版photoshop滤镜库报错解法

    http://bbs.pcbeta.com/viewthread-1556878-1-1.html

  3. js列表分页

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. android数据存储之Sqlite(一)

    SQLite学习笔记 1. Sqlite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低 ...

  5. Ruby Numeric

    Numeric |-- Float |-- Integer |-- Fixnum |-- Bignum Numeric的基本结构 整数的差异,一般的数字Fixnum就能够处理,即使超过了Fixnum的 ...

  6. linux系统中rsync+inotify实现服务器之间文件实时同步

    最近需要对服务器上的文件实施动态备份,我又不想每次都手动来进行备份,在网上找了挺多资料,发现使用rsync就可以实现,如果想要实现实时同步,还可以使用rsync+inotify组合,本文就是以组合方式 ...

  7. Softerra LDAP Browser 使用及配置 有图有真相

    Softerra LDAP Browser 4.5 我使用Softerra LDAP Browser的目的,是为了查找公司的人员信息.网上关于Softerra LDAP Browser配置太少了,所以 ...

  8. 【maven】之开发pom配置常用插件

    1.打包跳过测试代码 <plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId&g ...

  9. Linux从逻辑地址到物理地址

    转自:http://blog.chinaunix.net/uid-24774106-id-3427836.html 我们都知道,动态共享库里面的函数的共享的,这也是动态库的优势所在,就是节省内存.C ...

  10. hbase读写流程

    一. Hbase读流程 META表记录着表的原信息,根据rowkey查询META表,获取所在region信息 客户端去相应的regionServer查询数据,先查询memStore(memstore是 ...