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) ...
随机推荐
- python_并发编程——事件
1.事件 :通过一个信号来控制多个进程同时执行或者阻塞. 一个信号可以使所有的进程都进入阻塞状态,也可以控制所有的进程接触阻塞,一个事件被创建之后,默认是阻塞状态. from multiprocess ...
- LG4720 【模板】扩展卢卡斯定理
扩展卢卡斯定理 求 \(C_n^m \bmod{p}\),其中 \(C\) 为组合数. \(1≤m≤n≤10^{18},2≤p≤1000000\) ,不保证 \(p\) 是质数. Fading的题解 ...
- Spark Streaming的原理
Spark Streaming应用也是Spark应用,Spark Streaming生成的DStream最终也是会转化成RDD,然后进行RDD的计算,所以Spark Streaming最终的计算是RD ...
- [NgRx 8] Basic of NgRx8
1. First step is creating action creator Action name should be clear which page, which functionality ...
- bzoj 1100: [POI2007]对称轴osi 思维
特别神的一道题. 有一句话要反复揣摩:题中给的所有点构成一个多边形!! 而且读入还是按照多边形的轮廓读进来的!!! 我们知道,如果对称轴确定的话判定条件是对应角相等且对应边相等. 所以把相邻边夹角和边 ...
- mock模拟后台数据
import Mock from 'mockjs' const Random = Mock.Random // 获取random对象,随机生成各种数据,具体请翻阅文档 const domain = ' ...
- 看加载的php.ini 和 phpinfo 配置路径
php -i | grep "phar.readonly"看当前值php -i | grep "php.ini" 看加载的php.ini是哪个
- 利用fgetc合并2个源文件的内容,到一个新的文件中
#include <stdio.h> #include <stdlib.h> //功能: 合并2个源文件的内容,到一个新的文件中 int main(int a,char *ar ...
- POJ 2987 Firing 最大流 网络流 dinic 模板
https://www.cnblogs.com/137shoebills/p/9100790.html http://poj.org/problem?id=2987 之前写过这道题,码一个dinic的 ...
- SSM ehcache 配置 mapper 文件出错
异常 十二月 26, 2017 1:44:49 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetPropertie ...