zoukankan      html  css  js  c++  java
  • 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()
          )
    

      

  • 相关阅读:
    JQuery实现数组移除指定元素
    美团酒旅面经
    搜狗一面
    360面经
    头条面经
    搜狐笔试题
    kolakoski序列
    函数的节流
    隐藏元素的几种方法
    移动端适配与响应式布局
  • 原文地址:https://www.cnblogs.com/emars/p/12154800.html
Copyright © 2011-2022 走看看