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这两个类呢?  请见下一篇。

     

  • 相关阅读:
    int string java 呼转
    E:Encountered a section with no Package: header, E:Problem with MergeList /var/lib/apt/lists/******
    东南大学课程表爬虫
    文件传输器
    springmvc-项目启动初始化类
    分享一段线程队列--生产者和消费者代码
    maven-assembly-plugin 插件打包一个bug手动解决方式
    dubbo Main独立运行,脱离web容器
    Logstash5.6.1-Kafka插件配置
    kafka 设置开机启动
  • 原文地址:https://www.cnblogs.com/Sandy-1128/p/locust-sandy-0319.html
Copyright © 2011-2022 走看看