美文网首页
Gatling学习实践(二)条件判断

Gatling学习实践(二)条件判断

作者: 陈凌川 | 来源:发表于2018-09-17 17:35 被阅读0次

背景

在使用Gatling的过程中,当前置接口异常,无法获取到数据作为其他接口的请求参数室,接口是不能请求的。或者通过feeder获取的数据要区分不同的情况请求不同的接口。此时,使用gatling的判断语句来处理相应的请求, 组成完整的请求链。

之前提到过,feeder和check中的saveAs都会将参数设置到session中,这里将使用session中保存的参数值作为判断依据。

条件判断- doif

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()
      }

条件判断- doIfEquals

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()
      }

条件判断-doIfOrElsedoIfEqualsOrElse

doIfOrElsedoIfEqualsOrElse判断成立执行第一个操作链,判断不成了是执行第二个操作链

    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()
      }

条件判断- doSwitchdoSwitchOrElse

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()
      )

随机判断- randomSwitchrandomSwitchOrElse

设置的概率值必须小于100%,命中概率不相等

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

随机判断- uniformRandomSwitch

随机执行,命中概率相等

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

循环判断- roundRobinSwitch

循环执行

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

参考资料

Gatling官方文档:scenario

相关文章

网友评论

      本文标题:Gatling学习实践(二)条件判断

      本文链接:https://www.haomeiwen.com/subject/gkplnftx.html