在使用Gatling的过程中,当前置接口异常,无法获取到数据作为其他接口的请求参数室,接口是不能请求的。或者通过feeder获取的数据要区分不同的情况请求不同的接口。此时,使用gatling的判断语句来处理相应的请求, 组成完整的请求链。之前提到过,feeder和check中的saveAs都会将参数设置到session中,这里将使用session中保存的参数值作为判断依据

函数 解释
doif 在判断成立的情况下执行特定的操作链
doIfEquals 判断两个值相等
doIfOrElse和doIfEqualsOrElse 判断成立执行第一个操作链,判断不成了是执行第二个操作链
doSwitch、doSwitchOrElse 条件判断
randomSwitch和randomSwitchOrElse 设置的概率值必须小于100%,命中概率不相等
uniformRandomSwitch 随机执行,命中概率相等 
roundRobinSwitch 循环执行
脚本案例:

eg:doif

  val demo_test = scenario("test")
.exec(_.set("status",0))
.exec(_.set("OpenID","start-open-end"))
.doIf( session=>session("status").as[Int]==0 ){ //判断status成功
exec()
}
.doIf(session=>session("OpenID").as[String].equals("start-open-end")){ //判断OpenID成功
exec()
}
.doIf(session=>session("OpenID").as[String].startsWith("start")){ //判断OpenID 是以start开头
exec()
}
.doIf(session=>session("OpenID").as[String].contains("open")){ //判断OpenID 包含 open
exec()
}

  eg:doIfEquals

 val demo_test = scenario("test")
.exec(_.set("status",0))
.exec(_.set("OpenID","start-open-end"))
.doIfEquals( "${status}", 0 ){ //判断status等于0
exec()
}
.doIfEquals("${OpenID}","start-open-end"){ //判断OpenID等于start-open-end
exec()
}

  eg:doIfOrElse和doIfEqualsOrEls

val demo_test = scenario("test")
.exec(_.set("status",0))
.exec(_.set("OpenID","start-open-end"))
.doIfOrElse(session=>session("OpenID").as[String].endsWith("start")){
// 判断成立时执行
exec()
}{
// 判断不成立是执行
exec()
}
.doIfEqualsOrElse( "${status}", 1 ){ exec()
}{
exec()
}

  eg:doSwitch、doSwitchOrElse

  val array_feeder = Array(
Map("status" -> 1),
Map("status" -> 2),
Map("status" -> 3),
Map("status" -> 4)
).random val demo_test = scenario("test")
.feed(array_feeder)
.doSwitch("${status}")(
1 -> exec(),
2 -> exec()
)
.doSwitchOrElse("${status}")(
3 -> exec(),
4 -> exec()
)(
exec()
)

  eg:randomSwitch和randomSwitchOrElse

 val demo_test = scenario("test")
.randomSwitch(
50d -> exec(session=>{
println("50% 概率 执行")
session
}),
30d -> exec(session=>{
println("30% 概率 执行")
session
})
).randomSwitchOrElse(
1d -> exec(session=>{
println("1% 概率 执行此处")
session
})
)(
exec(session=>{
println("99% 概率 执行此处")
session
})
)

  eg:uniformRandomSwitch

val demo_test = scenario("test")
.uniformRandomSwitch(
exec(),
exec(),
exec()
)

  eg:roundRobinSwitch

val demo_test = scenario("test")
.roundRobinSwitch(
exec(),
exec(),
exec()
)

  

Gatling 条件判断的更多相关文章

  1. C# if中连续几个条件判断

    C# if中连续几个条件判断 1.if (条件表达式1 && 条件表达式2) 当条件表达式1为true时 using System; using System.Collections. ...

  2. js条件判断时隐式类型转换

    Javascript 中,数字 0 为假,非0 均为真 在条件判断运算 == 中的转换规则是这样的: 如果比较的两者中有布尔值(Boolean),会把 Boolean 先转换为对应的 Number,即 ...

  3. 5-3 bash脚本编程之二 条件判断

    1. 条件测试的表达式 1. [ expression ]  :注意这个中括号的前后都有一个空格 2. [[ expression ]] 3. test expression 2.条件判断的类型 1. ...

  4. 第10章 Shell编程(3)_字符处理命令和条件判断

    3. 字符处理命令 3.1 排序命令:sort (1)sort命令:#sort [选项] 文件名 选项 作用 -f 忽略大小写 -n 以数值型进行排序,默认使用字符串型排序 -r 反向排序 -t 指定 ...

  5. Nginx if 条件判断

    Nginx if 条件判断: 1.公司网站上线有这样的需求: 由于公司网站域名从http到https的转移,在测试阶段需要公司内部进行测试,公司内部局域网访问时强制访问加密的https服务,外部用户访 ...

  6. shell条件判断与流程控制

    一 条件判断式语句 1.按文件类型进行判断 测试类型 作用 -b 文件 判断文件是否存在,并且是否为块设备文件(是块设备文件为真) -c 文件 判断文件是否存在,并且是否为字符设备文件(是字符设备设备 ...

  7. 为什么说在使用多条件判断时switch case语句比if语句效率高?

    在学习JavaScript中的if控制语句和switch控制语句的时候,提到了使用多条件判断时switch case语句比if语句效率高,但是身为小白的我并没有在代码中看出有什么不同.去度娘找了半个小 ...

  8. wordpress 函数、条件判断以及文件的总结

    WordPress基本模板文件 一套完整的WordPress模板应至少具有如下文件: style.css : CSS(样式表)文件 index.php : 主页模板 archive.php : Arc ...

  9. 【重点】Shell入门教程:流程控制(2)条件判断的写法

    第三节:条件判断的写法 if条件判断中,if的语法结构中的“条件判断”可以有多种形式.测试结果是真是假,就看其传回的值是否为0. 条件测试的写法,有以下10种: 1.执行某个命令的结果 这里的命令,可 ...

随机推荐

  1. Bootstrap 基本配置与应用

    配置使用 下载文件引用 下载方式:Bootstrap官网 https://www.bootcss.com/ 引用 例: <head> <meta charset="utf- ...

  2. MySQL datetime类型详解

    研发反馈问题,数据库中datetime数据类型存储的值末尾会因四舍五入出现不一致数据,影响查询结果,比如:程序中自动获取带毫秒精度的日期'2019-03-05 01:53:55.63',存入数据库后变 ...

  3. Vue组件通信方式全面详解

    vue组件通信方式全面详解 众所周知,Vue主要思想就是组件化开发.因为,在实际的项目开发中,肯定会以组件的开发模式进行.形如页面和页面之间需要通信一样,Vue 组件和组件之间肯定也需要互通有无.共享 ...

  4. ​知识图谱与机器学习 | KG入门 -- Part1 Data Fabric

    介绍 如果你在网上搜索机器学习,你会找到大约20500万个结果.确实是这样,但是要找到适合每个用例的描述或定义并不容易,然而会有一些非常棒的描述或定义.在这里,我将提出机器学习的另一种定义,重点介绍一 ...

  5. Ubuntu文件(文件夹)创建(删除)

    创建 创建文件: touch a.txt创建文件夹: mkdir NewFolderName 删除 删除文件: rm a.txt删除文件夹: rmdir FolderName删除带有文件的文件夹: r ...

  6. Java系列之内部类

    今天温习一下 Java 中的内部类,内部类一般有如下几种:静态内部类.成员内部类.匿名内部类和方法内部类,下文中将主要介绍静态内部类和成员内部类,主要内容如下: 概述 静态内部类 成员内部类 匿名内部 ...

  7. HTML特殊转义字符——特殊符号

    干货,见下图: 后期我会陆续更一些JavaScript的文章,大家可以一起学习交流.

  8. Ali_Cloud++:阿里云-单机版 solr4.10.3 安装部署

    本次案例演示:环境 1.solr-4.10.3.tgz.tgz 2.apache-tomcat-7.0.88.tar.gz 3.IKAnalyzer2012FF_hf1.zip 资源下载:Downlo ...

  9. 字典树基础进阶全掌握(Trie树、01字典树、后缀自动机、AC自动机)

    字典树 概述     字典树,又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它 ...

  10. F - F HDU - 1173(二维化一维-思维)

    F - F HDU - 1173 一个邮递员每次只能从邮局拿走一封信送信.在一个二维的直角坐标系中,邮递员只能朝四个方向移动,正北.正东.正南.正西. 有n个需要收信的地址,现在需要你帮助找到一个地方 ...