Locust-参数化批量注册(还没试,目测试可以的)
前言
实现场景:所有并发虚拟用户共享同一份测试数据,并且保证虚拟用户使用的数据不重复。
例如,模拟10用户并发注册账号,总共有100个手机号,要求注册账号不重复,注册完毕后结束测试
准备数据
| 虚拟用户 | locust1 | locust2 | locust3 | locust4 | locust5 | locust6 | locust7 | locust8 | locust9 | locust10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 共享数据 | tel1 | tel2 | tel3 | tel4 | tel5 | tel6 | tel7 | ...... | tel99 | tel100 |
虚拟用户数,可以在启动的时候设置,这里先装备好注册需要用到的手机号,可以用list生成
# 生成测试手机号
demo = 13812120000
teldatas = [str(demo+i) for i in range(100)]
print(teldatas)
将测试数据加到队列
import queue
# 生成测试手机号
demo = 13812120000
teldatas = [str(demo+i) for i in range(100)]
# print(teldatas)
# 添加到队列
telqueue = queue.Queue()
for i in teldatas:
telqueue.put_nowait(i)
注册demo参考
以下是一个简单的demo模型,具体的注册接口替换过去就可以了
# 保存为 locustfile4.py
# coding=utf-8
from locust import HttpLocust, TaskSet, task
import queue
class test_taskset(TaskSet):
@task
def register(self):
try:
tel = self.locust.telqueue.get() # 获取队列里的数据
print(tel)
except queue.Empty: # 队列取空后,直接退出
print("no data exist")
exit(0)
print("当前注册手机号:%s" % tel)
# body = {
# "username": tel,
# "psd": "123456",
# }
# self.client.post("/register", data=body) # POST方法发送请求
class test_run(HttpLocust):
host = 'http://192.168.1.xxx:80'
task_set = test_taskset
# 生成测试手机号
teldatas = [str(13812120000+i) for i in range(100)]
# 添加到队列
telqueue = queue.Queue()
for i in teldatas:
telqueue.put_nowait(i)
if __name__ == "__main__":
import os
os.system("locust -f locustfile4.py")
cmd命令行启动
$ locust -f locustfile4.py
打开web页面,输入10个用户, 可以看到控制台的打印

[2018-09-21 00:00:58,013] DESKTOP-HJ487C8/INFO/stdout: 当前注册手机号:13812120096
[2018-09-21 00:00:58,013] DESKTOP-HJ487C8/INFO/stdout:
[2018-09-21 00:00:58,015] DESKTOP-HJ487C8/INFO/stdout: 13812120097
[2018-09-21 00:00:58,015] DESKTOP-HJ487C8/INFO/stdout:
[2018-09-21 00:00:58,015] DESKTOP-HJ487C8/INFO/stdout: 当前注册手机号:13812120097
[2018-09-21 00:00:58,015] DESKTOP-HJ487C8/INFO/stdout:
[2018-09-21 00:00:58,015] DESKTOP-HJ487C8/INFO/stdout: 13812120098
[2018-09-21 00:00:58,015] DESKTOP-HJ487C8/INFO/stdout:
[2018-09-21 00:00:58,015] DESKTOP-HJ487C8/INFO/stdout: 当前注册手机号:13812120098
[2018-09-21 00:00:58,015] DESKTOP-HJ487C8/INFO/stdout:
[2018-09-21 00:00:58,017] DESKTOP-HJ487C8/INFO/stdout: 13812120099
[2018-09-21 00:00:58,017] DESKTOP-HJ487C8/INFO/stdout:
[2018-09-21 00:00:58,017] DESKTOP-HJ487C8/INFO/stdout: 当前注册手机号:13812120099
[2018-09-21 00:00:58,017] DESKTOP-HJ487C8/INFO/stdout:
来源: https://www.cnblogs.com/yoyoketang/p/9683897.html
后记:
需要循环取数组里面的值的话 把取出来的值 再次放入到队尾即可
try:
tel = self.locust.telqueue.get() # 获取队列里的数据
print(tel)
except queue.Empty: # 队列取空后,直接退出
print("no data exist")
exit(0)
print("当前注册手机号:%s" % tel)
self.locust.telqueue.put_nowait(tel)
其他插入队列的方法见: https://www.cnblogs.com/grandlulu/p/9264819.html
Locust-参数化批量注册(还没试,目测试可以的)的更多相关文章
- Locust性能测试-参数化批量注册
前言 实现场景:所有并发虚拟用户共享同一份测试数据,并且保证虚拟用户使用的数据不重复. 例如,模拟10用户并发注册账号,总共有100个手机号,要求注册账号不重复,注册完毕后结束测试 准备数据 虚拟用户 ...
- locust手机号批量注册性能测试
from locust import TaskSet,task,HttpLocust from common.redisCon import redis_clusters import queue c ...
- 谁还没遇上过NoClassDefFoundError咋地——浅谈字节码生成与热部署
谁还没遇上过NoClassDefFoundError咋地--浅谈字节码生成与热部署 前言 在Java程序员的世界里,NoClassDefFoundError是一类相当令人厌恶的错误,因为这类错误通常非 ...
- Dynamic CRM 2013学习笔记(四)单据编号及插件批量注册工具
基本上每个实体form上都会有单据编号,而且不同的实体编号要求还不太一样,这时就需要一个通用的单据编号插件,可配置以应对不同的需求. 下面简单介绍下实现步骤: 1. 创建二个实体,以保存各实体所要求的 ...
- 在ASP.NET Core中使用托管启动(hosting startup)程序集,实现批量注册service
在启动ASPNET Core时可以从外部程序集向应用添加增强功能.例如,外部库可以用托管启动( hosting startup) 实现为应用程序提供附加配置(Configuration)或服务(ser ...
- 完整且易读的最新版小程序登录态和检验注册过没的app.js写法
目录 0.可参考的官方页面 1.流程 2.app.js代码 3.java后台怎么通过code获取openId 0.可参考的官方页面 获取登录凭证:https://developers.weixin.q ...
- 升级过log4j,却还没搞懂log4j漏洞的本质?
摘要:log4j远程代码漏洞问题被大范围曝光后已经有一段时间了,今天完整讲清JNDI和RMI以及该漏洞的深层原因. 本文分享自华为云社区<升级过log4j,却还没搞懂log4j漏洞的本质?为你完 ...
- Spring系列11:@ComponentScan批量注册bean
回顾 在前面的章节,我们介绍了@Comfiguration和@Bean结合AnnotationConfigApplicationContext零xml配置文件使用Spring容器的方式,也介绍了通过& ...
- 在各方面还没准备好的时候,大家一定要慎用border-box样式!!!!
这几天,我被一个js问题困扰到癫狂了! 事情是这样的,我之前写了个功能非常复杂的纯jquery代码的前端gridview控件,实现了大量的功能和效果,在一些项目里也用得很好. 最近有个项目,样式做了调 ...
- RegisterDllAndOcx.bat -批量注册当前文件夹中的dll和ocx
批量注册当前文件夹中的dll和ocx 新建文件:RegisterDllAndOcx.bat @echo off echo hello,girl~~ for %%i in (*.dll *.ocx) ...
随机推荐
- Vue钩子函数
Vue的生命周期函数 beforeCreate:function(){ console.log('1-beforeCreate 初始化之后'); }, created:function(){ cons ...
- 「SDOI2016」征途
征途 Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成\(n\)段,相邻两段路的分界点设有休息站. Pine计划用\(m\)天到达T地.除第\(m\)天外,每一天晚上Pine都必须在休息 ...
- nginx添加系统服务(start|stop|restart|reload)
nginx添加系统服务 1.编写脚本,名为nginx #vim /etc/init.d/nginx #!/bin/bash#chkconfig: - 99 20 #description: Nginx ...
- Apollo简介及工作原理
一.Apollo简介 1.Apollo是携程框架部门研发的分布式配置中心 2.集中化管理应用的不同环境和不同集群的配置 3.配置修改后能够实时推送到应用端 4.具备规范的权限.流程治理等特性 二.Ap ...
- RCNN,Fast RCNN,Faster RCNN 的前生今世:(2)R-CNN
Region CNN(RCNN)可以说是利用深度学习进行目标检测的开山之作.作者Ross Girshick多次在PASCAL VOC的目标检测竞赛中折桂,2010年更带领团队获得终身成就奖,如今供职于 ...
- 0907 安装 Pycharm
Pycharm Professional(专业版)最简单方法破解,亲测有效 简介 PyCharm是由JetBrains打造的一款Python IDE,VS2010的重构插件Resharper就是出自J ...
- 使用Default Trace查看谁还原了你的数据库?
select e.nameaseventclass,t.loginname,t.spid,t.starttime, t.textdata,t.objectid,t.objectname,t.datab ...
- learning java 正则表达式
var regStr = "Java is very good"; Matcher m = Pattern.compile("\\w+").matcher(re ...
- js判断是不是在微信浏览器打开?
is_weixin:function(){ var ua = window.navigator.userAgent.toLowerCase(); if (ua.match(/Mic ...
- ADO.NET五大对象增删改查使用
string ConnStr = "Data Source=.;Initial Catalog=ADO_DEMO;Integrated Security=True"; #regio ...