zoukankan      html  css  js  c++  java
  • 开源性能测试工具Locust使用篇(一)

    1. 环境准备

      安装python3.6 ,安装步骤略

      pip install locust

      安装完成后使用locust -V检查

    2.locust使用,先编辑一个简单的load_test.py的脚本

    from locust import HttpLocust,TaskSet,task
    
    class UserBehavior(TaskSet):
    
        @task
        def baidu_index(self):
            self.client.get("/")
    
    
    class WebsiteUser(HttpLocust):
        task_set = UserBehavior
        min_wait = 3000
        max_wait = 6000
    

      

    创建UserBehavior()类继承TaskSet类,为用户行为。

    创建baidu() 方法表示一个行为,访问百度首页。

    @task() 装饰该方法为一个任务

    创建WebsiteUser()类用于设置性能测试。

      task_set :指向一个定义了的用户行为类。

      min_wait :用户执行任务之间等待时间的下界,单位:毫秒。

      max_wait :用户执行任务之间等待时间的上界,单位:毫秒

    3. 运行locust

    locust -f load_test.py --host=https://www.cnblogs.com/Sandy-1128/p/appium-python-sandy-0306-5.html

    通过浏览器访问localhost:8089

    Number of users to simulate 设置模拟用户数

    Hatch rate (users spawned/second)  每秒产生(启动)的用户数。

    点击Start swarming 开始运行性能测试

    也可以使用无web界面访问

      locust -f load_test.py --host=https://www.baidu.com --no-web -c 2 -r 1 -t 1m

    启动参数:

      –no-web 表示不使用Web界面运行测试。

      -c 设置虚拟用户数。

      -r 设置每秒启动虚拟用户数。

      -t 设置设置运行时间

     

    那我们看另一个实例:

    from locust import HttpLocust, TaskSet, task
    
    class WebsiteTasks(TaskSet):
        def on_start(self):
            self.client.post("/", {
            "username": "test",
            "password": "123456"
            })
    
        @task(2)
        def index(self):
            self.client.get("/p/appium-python-sandy-0306-5.html")
    
        @task(1)
        def about(self):
            self.client.get("/locust-sandy-0319/")
    
    class WebsiteUser(HttpLocust):
        task_set = WebsiteTasks
        host = "https://www.cnblogs.com/Sandy-1128"
        min_wait = 1000
        max_wait = 2000
    

      

    在这个示例中,定义了针对"https://www.cnblogs.com/Sandy-1128

    网站的测试场景:先模拟用户登录系统,然后随机地访问首页(/)和关于页面(/about/),请求比例为2:1;并且,在测试过程中,两次请求的间隔时间为1~2秒间的随机值

     

     

    那么,如上Python脚本是如何表达出以上测试场景的呢?

     

    从脚本中可以看出,脚本主要包含两个类,一个是WebsiteUser(继承自HttpLocust,而HttpLocust继承自Locust),另一个是WebsiteTasks(继承自TaskSet)。事实上,在Locust的测试脚本中,所有业务测试场景都是在LocustTaskSet两个类的继承子类中进行描述的。

    那如何理解LocustTaskSet这两个类呢?  请见下一篇。

     

  • 相关阅读:
    4.qml-ECMAScript(Array对象、Math对象)
    3.qml-ECMAScript_03(Object基类对象、String对象)
    2.qml-ECMAScript_02(原始值类型、通用转换方法)
    ORA-00001: 违反唯一约束条件(SOLEX.SYS_C0012537) --解决方法
    macOS 系统打开和退出文件夹(cd命令)
    macOS 系统下node安装和环境配置(通过node官网)
    macOS 系统报错:zsh:command not found :npm
    macOS 系统更新node老是不成功
    macOS 系统上升级 Python
    maxOS 系统更新node版本
  • 原文地址:https://www.cnblogs.com/Sandy-1128/p/locust-sandy-0319.html
Copyright © 2011-2022 走看看