python locust 参数化_Locust 参数化 - osc_8b50jzrj的个人空间 - OSCHINA - 中文开源技术交流社区...

概述:

和Loadrunner一样对于多用户并发时,重复登入或者数据的重复使用会造成脚本的失败,那么我们引入Loadrunner的参数化概念,对用户数据进行参数化来使脚本运行成功。

头绪:

user1

user2

user3

迭代1

account1

account2

account3

迭代2

account4

account5

account6

从上表我们可以看到用户迭代使用不同账号操作脚本,此处我们列举用户注册的例子。

转换思维,不同用户用不同的账号信息去进行注册,也就是说可以看做一个队列排队取数的一个过程。

【account1,account2,。。。。】

Python库中正好有Queue队列完美符合我们的使用场景

Queue介绍:

Queue的种类:

FIFO:

Queue.Queue(maxsize=0)

FIFO即First in First Out,先进先出。Queue提供了一个基本的FIFO容器,使用方法很简单,maxsize是个整数,指明了队列中能存放的数据个数的上限。一旦达到上限,插入会导致阻塞,直到队列中的数据被消费掉。如果maxsize小于或者等于0,队列大小没有限制。

LIFO

Queue.LifoQueue(maxsize=0)

LIFO即Last in First Out,后进先出。与栈的类似,使用也很简单,maxsize用法同上

priority

class Queue.PriorityQueue(maxsize=0)

构造一个优先队列。maxsize用法同上。

基本方法:

Queue.Queue(maxsize=0)   FIFO, 如果maxsize小于1就表示队列长度无限

Queue.LifoQueue(maxsize=0)   LIFO, 如果maxsize小于1就表示队列长度无限

Queue.qsize()   返回队列的大小

Queue.empty()   如果队列为空,返回True,反之False

Queue.full()   如果队列满了,返回True,反之False

Queue.get([block[, timeout]])   读队列,timeout等待时间

Queue.put(item, [block[, timeout]])   写队列,timeout等待时间

Queue.queue.clear()   清空队列

Locust中使用场景:

通过循环,每次put 数据data到队列结尾

user_data =queue.Queue()for i in range(100):

data={"username": "test%d" %i,"password": "pwd%d" %i,"email": "test%d@xxx.com" %i,"phone": "135%08d" %i,

}

user_data.put_nowait(data)

再通过queue.get方法,取出队列第一个数据

实际使用场景:

from locust importHttpLocust, TaskSet, taskimportqueueclasstest_taskset(TaskSet):

@taskdefregister(self):try:

data=self.locust.queueData.get() //获取队列里的数据print(data)exceptqueue.Empty: //队列取空后,直接退出print('no data exist')

exit(0)print('actually user and password is {} and {}'.format(data['username'], data['password']))

payload={'username': data['username'],'password': data['password'],

}

self.client.post('/register', data=payload) //POST方法发送请求classtest_run(HttpLocust):

host= '192.168.1.100:16060'task_set=test_taskset

queueData=queue.Queue() //队列实例化for count in range(100): //循环数据生成

data={"username": "test%d" %count,"password": "pwd%d" %count,"email": "test%d@xxx.com" %count,

}

如果需要对数据进行循环使用(比如登入脚本),可以在队列取出后,再把取出数据放入队尾中:

self.locust.queueData.put_nowait(data)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值