51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1661|回复: 2
打印 上一主题 下一主题

使用Locust快速完成高并发测试

[复制链接]
  • TA的每日心情
    奋斗
    2021-8-6 16:14
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2019-2-21 16:23:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    简介

    Locust是一款易于使用的分布式用户负载测试工具。它用于对网站(或其他系统)进行负载测试,并确定系统可以处理多少并发用户。


    特点
    • 使用python编写测试脚本
    • 支持模拟数十万用户
    • 基于web的操作界面
    • 可以测试任何网站

    安装

    系统centos 7

    1. pip install locustio
    复制代码


    示例代码
    1. from locust import HttpLocust, TaskSet, task

    2. class UserBehavior(TaskSet):
    3.     def on_start(self):
    4.         """ on_start is called when a Locust start before any task is scheduled """
    5.         self.login()

    6.     def on_stop(self):
    7.         """ on_stop is called when the TaskSet is stopping """
    8.         self.logout()

    9.     def login(self):
    10.         self.client.post("/login", {"username":"ellen_key", "password":"education"})

    11.     def logout(self):
    12.         self.client.post("/logout", {"username":"ellen_key", "password":"education"})

    13.     @task(2)
    14.     def index(self):
    15.         self.client.get("/")

    16.     @task(1)
    17.     def profile(self):
    18.         self.client.get("/profile")

    19. class WebsiteUser(HttpLocust):
    20.     weight = 1
    21.     task_set = UserBehavior
    22.     min_wait = 5000
    23.     max_wait = 9000
    24.     host=https://google.com
    25.    
    26. class MobileUserLocust(HttpLocust):
    27.     weight = 3
    28.     task_set = UserBehavior
    29.     min_wait = 5000
    30.     max_wait = 9000
    31.     host=https://google.com
    复制代码
    Locust类参数(MobileUserLocust)

    task_set:指定定义用户行为的类,包含一组任务
    min_wait:最小的等待时间,毫秒
    max_wait:最大的等待时间,毫秒 两者为声明则默认为1秒
    host:加载的主机的URL前缀
    weight:运行的次数比例
    TaskSet类参数

    @task(1):任务装饰器,参数为运行次数的比例

    TaskSequence类

    TaskSequence类是一个TaskSet,但它的任务将按顺序执行.


    1. from locust import TaskSequence, task
    2. class MyTaskSequence(TaskSequence):
    3.     @seq_task(1)
    4.     def first_task(self):
    5.         pass

    6.     @seq_task(2)
    7.     def second_task(self):
    8.         pass

    9.     @seq_task(3)
    10.     @task(10)
    11.     def third_task(self):
    12.         pass
    复制代码

    在上面的示例中,顺序被定义为执行first_task,然后执行second_task,最后执行third_task 10次


    启动测试
    1. //启动指定文件
    2. locust -f ./locust_test.py

    3. //启用2个locust
    4. locust -f locust_file.py WebUserLocust MobileUserLocust
    复制代码



    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏1
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-6-25 03:28 , Processed in 0.064874 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表