Gatling 条件判断
在使用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 条件判断的更多相关文章
- C# if中连续几个条件判断
C# if中连续几个条件判断 1.if (条件表达式1 && 条件表达式2) 当条件表达式1为true时 using System; using System.Collections. ...
- js条件判断时隐式类型转换
Javascript 中,数字 0 为假,非0 均为真 在条件判断运算 == 中的转换规则是这样的: 如果比较的两者中有布尔值(Boolean),会把 Boolean 先转换为对应的 Number,即 ...
- 5-3 bash脚本编程之二 条件判断
1. 条件测试的表达式 1. [ expression ] :注意这个中括号的前后都有一个空格 2. [[ expression ]] 3. test expression 2.条件判断的类型 1. ...
- 第10章 Shell编程(3)_字符处理命令和条件判断
3. 字符处理命令 3.1 排序命令:sort (1)sort命令:#sort [选项] 文件名 选项 作用 -f 忽略大小写 -n 以数值型进行排序,默认使用字符串型排序 -r 反向排序 -t 指定 ...
- Nginx if 条件判断
Nginx if 条件判断: 1.公司网站上线有这样的需求: 由于公司网站域名从http到https的转移,在测试阶段需要公司内部进行测试,公司内部局域网访问时强制访问加密的https服务,外部用户访 ...
- shell条件判断与流程控制
一 条件判断式语句 1.按文件类型进行判断 测试类型 作用 -b 文件 判断文件是否存在,并且是否为块设备文件(是块设备文件为真) -c 文件 判断文件是否存在,并且是否为字符设备文件(是字符设备设备 ...
- 为什么说在使用多条件判断时switch case语句比if语句效率高?
在学习JavaScript中的if控制语句和switch控制语句的时候,提到了使用多条件判断时switch case语句比if语句效率高,但是身为小白的我并没有在代码中看出有什么不同.去度娘找了半个小 ...
- wordpress 函数、条件判断以及文件的总结
WordPress基本模板文件 一套完整的WordPress模板应至少具有如下文件: style.css : CSS(样式表)文件 index.php : 主页模板 archive.php : Arc ...
- 【重点】Shell入门教程:流程控制(2)条件判断的写法
第三节:条件判断的写法 if条件判断中,if的语法结构中的“条件判断”可以有多种形式.测试结果是真是假,就看其传回的值是否为0. 条件测试的写法,有以下10种: 1.执行某个命令的结果 这里的命令,可 ...
随机推荐
- 【2019多校第一场补题 / HDU6582】2019多校第一场E题1005Path——最短路径+网络流
HDU6582链接 题意 在一张有向图中,有一个起点和一个终点,你需要删去部分路径,使得起点到终点的最短距离增加(并不要求需要使得距离变成最大值),且删除的路径长度最短.求删去的路径总长为多少 分析 ...
- 动态规划-Minimum Cost to Merge Stones
2019-07-07 15:48:46 问题描述: 问题求解: 最初看到这个问题的时候第一反应就是这个题目和打破气球的题目很类似. 但是我尝试了使用dp将问题直接转为直接合并到一个堆问题复杂度迅速提高 ...
- Linux Ubuntu 开发环境配置 ——最具生产力工具一览
Why Linux and Why exactly Ubuntu 首先这里就不做Mac,Linux,Windows三者之争了.只从个人角度分析下: Mac 不差钱(其实Mac作为超级本性价还行),不喜 ...
- 详解十大经典机器学习算法——EM算法
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第14篇文章,我们来聊聊大名鼎鼎的EM算法. EM算法的英文全称是Expectation-maximization al ...
- 深度强化学习(DRL)专栏(一)
目录: 1. 引言 专栏知识结构 从AlphaGo看深度强化学习 2. 强化学习基础知识 强化学习问题 马尔科夫决策过程 最优价值函数和贝尔曼方程 3. 有模型的强化学习方法 价值迭代 策略迭代 4. ...
- Lack of free swap space on Zabbix server
在模板(Template)里找到Linux OS模板,修改触发器 配置>模板>Template OS Linux>触发器 找到swap关键字 修改 {Template OS Linu ...
- iOS 编译过程原理(1)
一.前言 一般可以将编程语言分为两种,编译语言和直译式语言. 像 C++.Objective-C 都是编译语言.编译语言在执行的时候,必须先通过编译器生成机器码,机器码可以直接在 CPU 上执行,所以 ...
- Oracle 和SQL Server 中的SQL语句使用区别
最近开始接触Oracle,想要了解下同SQL Server使用时的区别.搜寻网上信息找到具体区别分类如下: 一.数据类型比较 类型名称 Oracle SQLServer 比较 字符数据类型 CHA ...
- CtenOS开放3306端口
1.查看防火墙状态 2. 关闭防火墙firewall 3. 开启端口 4. 重启防火墙 5. 常用命令介绍 在 Centos 7 中防火墙由 firewalld 来管理,而不是 iptables. 1 ...
- python学习笔记--字符串格式化
字符串和常量 print(r'hello\py\thon') r 代表后面字符不进行转义,原样输出; 表示常量,命名时变量名字大写代表常量.NAME = 'liulixue'; 字符串表示:' ', ...