暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Locust性能测试-API调用详解1

TimTest 2021-01-25
1434

从本篇文章开始,Locust性能测试文章将开始对API调用相关细节进行探讨,所以此后的文章可能会深入到Locust的一些细节。



本篇文章将对User类细节进行探讨。

 abstract属性

此属性是为了表明该类是否有子类,如果是True,那表明是有子类,Locust不会加载压力,而只会加载压力到子类上去。我们可以通过一个例子去验证其默认值是什么。测试脚本如下:

    from locust import User,between


    class MyUser(User):
    wait_time = between(3,5)


    muser = MyUser(environment=[])
    print(muser.abstract)
    复制

    执行脚本命令:

      python script1.py
      复制

      执行结果:

        False
        复制


        如果把abstract属性设置为true,那么在只有1个User类的情况下,看看最终在跑压力测试场景时的表现吧。测试脚本如下:

          from locust import User,between,task


          class MyUser(User):
          wait_time = between(3,5)
          abstract = True


          @task
          def task1(self):
          print("this is task 1.")


          复制

          在跑压力测试时,会出现如下错误,提示没有User类。如果将abstract值设置为False, 就可以正常执行脚本。

            [2021-01-25 08:58:41,353] jasondeMacBook-Pro.local/ERROR/locust.main: No User class found!
            复制


            那么abstract的目的是为了更好的管理脚本,比如很多测试脚本都需要去执行一些同样的方法/场景,那么就可以将这部分集成到一个User类中,将此类的abstract属性值设置为True.那么其他的User类在继承此类即可。

            如上脚本,我们只需要修改一下,添加一个子类就可以将压力测试进行下去。修改后脚本如下。

              from locust import User,between,task


              class MyUser(User):
              wait_time = between(3,5)
              abstract = True


              @task
              def task1(self):
              print("this is task 1.")






              class Sub_MyUser(MyUser):
              pass


              复制

              只是添加了一个子类,子类中的内容为空,只是这样,就可以成功执行场景中的task方法。

              文章转载自TimTest,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论