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. 在apache连接多php的时候遇到了问题,怎么切换多个php版本?

    PHP 在apache连接多php的时候遇到了问题,怎么切换多个php版本? 我的机器里面有一个apache2.2.22,但是有两个php,5.3.10和5.4.3,5.3.10是mac os x带的 ...

  2. Python列表操作——模拟实现栈和队列

    1.实现栈: stack=[] def pushit(): stack.append(raw_input('Enter New String:').strip()) def popit(): if l ...

  3. IIS用户权限备忘

    经常在网站部署到IIS遇到IIS帐户没有权限的问题,总是在看IIS Admin Service,但发现些帐户是有权限的. 其实针对相应的站点,应该看的是Application Pool的运行帐户,这个 ...

  4. Python 统计IIS日志行数

    __author__ = 'Administrator' import codecs def blocks(file, size=65536): while True: b = file.read(s ...

  5. python3倒叙字符串

    google测试工程师的一道题: 设计一个函数,使用任意语言,完成以下功能: 一个句子,将句子中的单词全部倒排过来,但单词的字母顺序不变.比如,This is a real world,输出结果为 w ...

  6. linux 下 nginx 启动服务器 80端口被占用问题

    把80端口占用的程序杀死 sudo fuser -k 80/tcp rm -fr 文件   ----删除文件及文加下的所有文件 echo > filename  ---清空文件的内容

  7. java序列化---转

    Java 序列化Serializable详解(附详细例子) 1.什么是序列化和反序列化Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是 ...

  8. ORACLE 包[转]

    包的作用: 包可以将任何出现在块声明的语句 ( 过程 , 函数 , 游标 , 游标 , 类型 , 变量 ) 放于包中 , 相当于一个容器 .使用包的好处不仅仅是程序的分组管理,还可以使用包中的程序重载 ...

  9. JAVA包命名规范

    学习Java的童鞋们都知道,Java的包.类.接口.方法.变量.常量:JavaEE的三层模型等都有一套约定俗成的命名规则. 我学习每种语言都会关注相应的命名规则,一则体现自己比较专业:二来方便后检查, ...

  10. (转)Android-Mac电脑如何进行APK反编译-使用apktool、jd-gui

    最近群里有人问如何在mac下进行apk反编译,我也没试过,以前都是在windows下进行反编译的,windows下很简单,有许多比较好的集成工具,如apkide(改之理),不过我猜mac下应该和win ...