locust

严重声明

本人自己学习用,例子都是官方文档的。想学习的自己可以去啃官方文档。

第一节:快速开始

一个简单的小例子认识locust。

安装

安装这种操作我怎么可能不会,略….

from locust import HttpLocust, TaskSet

def login(l):
    #第一个参数路径,第二个参数接口入参
    l.client.post("/login", {"username":"ellen_key", "password":"education"})

def index(l):
    l.client.get("/")

def profile(l):
    l.client.get("/profile")
class UserBehavior(TaskSet):
    tasks = {index: 2, profile: 1}#封装并配置权重

    def on_start(self):
        login(self)

class WebsiteUser(HttpLocust):
    task_set = UserBehavior
    min_wait = 5000
    max_wait = 9000

TaskSet:这个类是个测试套件,用来把定义的接口调用封装起来,形成业务线。
HttpLocust:locust执行时的入口。
这里整理一下思路:

  1. 导包,HttpLocust(运行入口类),TaskSet(测试套件类)
  2. 定义执行
  3. 封装测试套件
  4. 定义入口

进化版:

from locust import HttpLocust, TaskSet, task

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

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

    @task(2)#装饰器定义权重
    def index(self):
        self.client.get("/")

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

class WebsiteUser(HttpLocust):
    task_set = UserBehavior
    min_wait = 5000
    max_wait = 9000

好了,一个简单的压测场景就这么被我轻而易举的搞定了,帅气!!!撒花!!!
那么问题来了,场景有了怎么运行呢?
这对我来说简直易如反掌,简直是探囊取物,so easy!!!

locust -f locust_files/my_locust_file.py --host=http://example.com
locust -f locust_files/my_locust_file.py --master --host=http://example.com
locust -f locust_files/my_locust_file.py --slave --host=http://example.com
locust -f locust_files/my_locust_file.py --slave --master-host=192.168.0.100 --host=http://example.com

这些东西看名字就一目了然了,我不用记的。
locus已经启动了,下一步就是配置压测关键性的数据了。模拟用户数和执行时间。
http://127.0.0.1:8089,然后配置,然后run,搞定。

第二节:深入了解

开始正式的编写脚本吧少年!!!

脚本前的小tips(笑脸)

我们写的测试脚本会继承几个locust的类,来研究一下吧,想看源码

  • Locust:基类,被HttpLocust继承,定义了所有的测试属性,除了client(就是调用接口时使用的self.client);
  • HttpLocust:继承于Locust,添加属性self.client = HttpSession(base_url=self.host),HttpSession继承于requests.Session,在测试套件/用例里用的self.client就是在这里定义的;
  • TaskSet:规定了测试执行规则,组装测试套件,什么时候执行,怎么执行,怎么退出。

测试开始的重要属性

测试脚本执行的重要属性都是在继承HttpLocust的类中定义的,如下:

class Locust(HttpLocust):
    host = None
    stop_timeout = 1000
    task_set = Tick.ApplyTicket
    min_wait = 1000
    max_wait = 3000
    weight = 10

属性含义:

  1. host:被测试地址;
  2. stop_timeout :测试停止时间,单位S;
  3. min_wait 、max_wait 两个task的启动时间间隔,单位ms;
  4. weight:locust执行测试试随机选择执行的,weight就是被选中的权重;
  5. task_set:定义需要进行测试的测试套件。如果是如下的定义就只执行BusinessOne里的测试,如果想全部执行定义task_set = Model即可。
from locust import TaskSet, HttpLocust, task.
class Model(TaskSet):

    @task
    class BusinessOne(TaskSet):
        ...

    @task
    class BusinessOne(TaskSet):
        ...

class Locust(HttpLocust):
    host = None
    task_set = Model.BusinessOne

第三节:数据参数化

持续 更新中…..

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值