• 开源性能测试工具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这两个类呢?  请见下一篇。

     

  • 相关阅读:
    03、使用字符串
    加载selenium2Library失败---robotframework环境搭建(site-packages下无selenium2library文件夹)
    python无法启动火狐浏览器且报错“selenium.common.exceptions.WebDriverException: Message: Unable to find a matching set of capabilities”
    移动H5前端性能优化指南
    appium+python 启动一个app步骤
    Appium_Python_Client介绍
    python自动化---各类发送邮件方法及其可能的错误
    python自动化--批量执行测试之生成报告
    揭秘webdriver实现原理【转】
    selenium 三种断言以及异常类型
  • 原文地址:https://www.cnblogs.com/Sandy-1128/p/locust-sandy-0319.html
Copyright © 2020-2023  润新知