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.执行某个命令的结果 这里的命令,可 ...
随机推荐
- TensorFlow RNN 教程和代码
分析: 看 TensorFlow 也有一段时间了,准备按照 GitHub 上的教程,敲出来,顺便整理一下思路. RNN部分 定义参数,包括数据相关,训练相关. 定义模型,损失函数,优化函数. 训练,准 ...
- Ribbon负载均衡实现
1,在之前的博文中,我通过eureka,consul,zookeeper 实现了注册中心,在实现的服务发现过程中,都是通过RstTemplate 来实现RPC 远程调用 RestTemplate 封装 ...
- 前端学习(3)-CSS
一 CSS CSS是Cascading Style Sheets的缩写,层叠样式表,用来控制网页数据的显示,可以使网页的显示与数据内容分离. 二 引入方式 (1)行内式:在标记的style属性中设置C ...
- ThreadAbortException是可以传递的
今天在写线程Aborted代码时,发现嵌套的try catch中的ThreadAbortException错误是可以从内部传递到外部的,想想这也是必然的,在内部该线程已经中断了,外部必然是中断了,再仔 ...
- 深入理解NIO(三)—— NIO原理及部分源码的解析
深入理解NIO(三)—— NIO原理及部分源码的解析 欢迎回到淦™的源码看爆系列 在看完前面两个系列之后,相信大家对NIO也有了一定的理解,接下来我们就来深入源码去解读它,我这里的是OpenJDK-8 ...
- 【python系统学习12】函数
函数 函数是一堆组织好的.可重复利用的.用来实现某一功能的代码. python中的input().print().type().bool().len()等都是函数.且是python的内置函数. 我们也 ...
- Maven多仓库配置(公司仓库和阿里云仓库)
Maven多仓库配置(公司仓库和阿里云仓库) 一.之前的配置 之前maven本地的setting.xml的仓库配置,都是直接设置mirror节点 <mirrors> <mirror& ...
- Java合并png图片
package org.jimmy.autosearch2019.test; import java.awt.Graphics; import java.awt.image.BufferedImage ...
- My背包九讲——01背包
文章目录 背包问题中的常用变量说明 题目 解题思路 我想要想理解最简单 01背包就是要`理解
- jq ajax请求跨域问题
前端遇到跨域一般和后端协调让后端: