locust实战教程3-locust基本模型

题外话:       

         性能测试,不去扯那些造出来的指标,对比功能测试最简单的理解就是:功能测试时测试人员一步步去点,判断是否符合预期;而性能测试则是先在系统能承受的范围内(例如100个人),10、50、100个测试人员同时去点,然后再用200个人去点,再看看200个人有什么反馈,被点的对象状态怎么样

        谈到人数,我们不能做无米之炊,第一就是要造出测试数据来,一般都是造出一批模拟用户;如果有过了解都知道,项目很少有一个简单的sql插入就能模拟一个用户,当然能力足够当然是直接写入最快最方便,不能的话,大家都估计有经验,让研发去掉验证码之类的,给定一个固定验证码,然后找到用户注册流程接口,一个个调用,再批量生成用户

正题

当我们完成了用户数的添加,接下来就步入正题了(前面铺垫了那么久),

我们首先完成如下代码

test.py

from locust import  SequentialTaskSet
from locust.contrib.fasthttp import FastHttpUser
import  queue

class MockUserTask(SequentialTaskSet):
    @task
    def test_get_refresh_token_task(self):
        ...
    @task
    def test_check_token_time_out(self):
        ...



class UserInfo(FastHttpUser):
    sn_queue = queue.Queue()
    for i in range(0, 400):
        sn_queue.put_nowait(str(999999900000 + int(i)))
    tasks = [MockUserTask]

来一个个解读

单独弄一个UserInfo class的原因:简单说就是为了参数化,即我们要模拟多个用户,需要不同的用户信息,如不同的登陆账户,手机号等等,我的测试项目中是一个个设备,用的是唯一的sn标志的,则可将其放入一个队列中,当这个队列被get时,就会将其中sn取出并保证每次get时不会是上次的

FastHttpUser  即你要模拟的用户类需要继承的类,这个和官网中的HttpUser类似(HttpUser则可看为是requests的包装,用法一样),不同在于它是协程可以更快,这个对于我们性能测试十分有必要,所以直接用FastHttpUser 即可,其用法其实和requests一样

SequentialTaskSet 熟系一些测试框架的小伙伴都知道,例如接口测试框架中的测试函数都是随机执行的,这个locust也一样(我真的讨厌这个功能),测试类继承SequentialTaskSet之后,里面task装饰的测试函数就会按照顺序从上到下执行了

继承SequentialTaskSet的类 ---任务集合类

在任务集合类中被@task装饰的函数,可以看做是测试流程中一个个接口或者一个个步骤

tasks = [MockUserTask] 最终将MockUserTask放到任务列表中(列表可以放多个task任务集合)我建议一个即可,因为任务集合中task完全可以满足真个流程测试;启动locust -f test.py,locust首先在UserInfo中创建了队列,然后可以理解为根据task列表中任务,为每一个任务都创建一个对象在一个协程中运行(数目由webui指定或者根据运行时参数指定)

这样一个基本的流程就结束了,后面要做的就是写task完成流程了                                                   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值