1.参数化

方式1:循环取数据,数据可以重复使用。

所有并发虚拟用户共享同一份测试数据,各虚拟用户在数据列表中循环取值。
 例如,模拟10个用户并发请求网页,总共有4个URL地址,每个虚拟用户都会依次循环加载这4个URL地址。

class HttpTask(TaskSet):
index = 0
@task
def test001(self):
url = self.user.data[self.index]
self.index = (self.index + 1) % len(self.user.data)
print(url)
self.client.get(url) class MyUser(HttpUser):
host = "https://www.baidu.com"
tasks = [HttpTask]
between(0, 3)
data = ['https://www.baidu.com/',
'https://www.baidu.com/s?wd=1',
'https://www.baidu.com/s?wd=2',
'https://www.baidu.com/s?wd=3',
'https://www.baidu.com/s?wd=4']

方式2:保证并发测试数据唯一性,不循环取数据,使用队列的方法。

所有并发虚拟用户共享同一份测试数据,并且保证虚拟用户使用的数据不重复。

列如,模拟10用户并发注册账号,总共有100个账号,邀请注册账号不重复。注册完毕后自动结束测试。

class HttpTask(TaskSet):
@task
def test001(self):
try:
url = self.user.queue.get()
except queue.Empty:
exit(0)
self.client.get(url)
class MyUser(HttpUser):
host = "https://www.baidu.com"
tasks = [HttpTask]
between(0, 3)
queue = queue.Queue()
data = 'https://www.baidu.com/'
for i in range(5):
queue.put_nowait(data)

方式3:保证并发数据的唯一性,循环取数据,使用队列方法,,欸出使用完数据后在放入到队列中。

所有并发虚拟用户共享同一份测试数据,保证并发虚拟用户使用的数据不重复,并且数据可循环重复使用。

列如:模拟10用户并发登录账号。总共有100个账号,要求并发登录账号不相同,但数据可循环使用。

class HttpTask(TaskSet):
@task
def test001(self):
try:
url = self.user.queue.get()
except queue.Empty:
exit(0)
self.client.get(url)
self.user.queue.put_nowait(url)
class MyUser(HttpUser):
host = "https://www.baidu.com"
tasks = [HttpTask]
between(0, 3)
queue = queue.Queue()
data1 = ["https://www.baidu.com/",
"https://www.baidu.com/s?wd=1",
"https://www.baidu.com/s?wd=2",
"https://www.baidu.com/s?wd=3",
"https://www.baidu.com/s?wd=4"]
for i in range(0,5):
data = data1[i]
queue.put_nowait(data)

2集合

from locust import SequentialTaskSet, task, HttpUser,events
from gevent._semaphore import Semaphore
all_locusts_spawned = Semaphore()
all_locusts_spawned.acquire() def on_hatch_complete(**kwargs):
all_locusts_spawned.release() # 创建钩子方法
# events.on_hatch_complete += on_hatch_complete
# 挂在到locust钩子函数(所有的Locust示例产生完成时触发)
events.spawning_complete.add_listener(on_hatch_complete) class UserBehavior(SequentialTaskSet):
index = 0
# 限制在所有用户准备完成前处于等待状态
def on_start(self):
all_locusts_spawned.wait() @task
def test_visit(self):
all_locusts_spawned.wait() # 限制在所有用户准备完成前处于等待状态
url = self.user.share_data[self.index]
self.index = (self.index + 1) % len(self.user.share_data)
with self.client.get(url,catch_response=True) as response:
if response.status_code == 200:
response.success()
else:
response.failure("查询失败")
print('visit url: %s' % url) class WebsiteUser(HttpUser):
host = "https://www.baidu.com"
tasks = [UserBehavior]
share_data = ['https://www.baidu.com/',
'https://www.baidu.com/s?wd=1',
'https://www.baidu.com/s?wd=2',
'https://www.baidu.com/s?wd=3',
'https://www.baidu.com/s?wd=4']
min_wait = 100
max_wait = 300 if __name__ == '__main__':
import os
os.system("locust -f parameterized.py")

locust 检查点、集合点、参数化设置。的更多相关文章

  1. 性能学习笔记之四--事务,思考时间,检查点,集合点和手写lr接口

    一.事物,思考时间,检查点,集合点 1.事务 lr里面的事物是lr运行脚本的基础.lr里面 要测试的三个维度都以事物为单位,所以一定要有事物.事务的概念贯穿loadrunner的使用,比如我们说的响应 ...

  2. 【Loadrunner】初学Loadrunner——参数化设置(Table类型关联数据库)

    参数化输入是Loadrrunner里面一个强大的功能,属于Loadrunner的高级使用技巧. 我们在登录系统的时候,需要输入一组定义的用户名和密码,比如有5个虚拟用户同时登陆系统,则这五个用户都用这 ...

  3. Junit4学习(六)Junit4参数化设置

    一,背景, 有时候会对相同的代码结构做同样的操作,不同的时对参数的设置数据和预期结果:有没有好的办法提取出来相同的代码,提高代码的可重用度,junit4中使用参数化设置,来处理此种场景: 二,代码展示 ...

  4. 【JMeter】集合点的设置

    [JMeter]集合点的设置 简单来理解一下,虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存在的,为了更真实的实现并发这感念,我们可以在需要压力的地方设置集合点,每到输入用户名和密 ...

  5. 【Jmeter】如何通过文件导入方式对用户名和密码进行参数化设置

    JMeter 参数化 注意:param和data body只能用一个.所有任何一个里面有内容,切换都会报错,这不是问题,jmeter是这么设计的 方法一:通过添加CSV Data Set Config ...

  6. Jmeter参数化设置,多用户登录

    一.模拟多用户登录场景 如登录模式如下图所示,登录界面中需要输入:用户名.密码.验证码 用户名以及密码均是固定值,不需要做处理.验证码需要处理一下,可以后台配置成固定值,具体可以找开发咨询. 在此场景 ...

  7. LoadRunner脚本参数化设置

    LoadRunner,是一种预测系统行为和性能的负载测试工具,其中VUG(Virtual User Generator)主要用于虚拟用户生成和脚本编辑.为了实现单用户多次迭代执行脚本,VUG提供了强大 ...

  8. LR参数化设置(转)

    LR学习笔记---参数设置 2010-10-20 14:58:55|  分类: 默认分类|举报|字号 订阅     LR在录制程序运行的过程中,VuGen(脚本生成器) 自动生成了包含录制过程中实际用 ...

  9. Jmeter中各种参数化设置的方法

    Jmeter中有较多需要参数化测试的地方: 1.从一个用户登录的接口获取登录后的token值,取值后用于后续接口调用 2.获取用户浏览后的cookies信息,需要用到HTTP Cookie 管理器来为 ...

  10. 性能测试工具LoadRunner07-LR之Virtual User Generator 参数化设置

    1.Select next row[选择下一行]: 顺序(Sequential):按照参数化的数据顺序,一个一个的取 随机(Random):参数化中的数据,每次随机的从中抽取数据 唯一(Unique) ...

随机推荐

  1. dapr入门与本地托管模式尝试

    1 简介 Dapr是一个可移植的.事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的.无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架.Dapr支持的语言 ...

  2. 论文翻译:2020:ECAPA-TDNN: Emphasized Channel Attention, Propagation and Aggregation in TDNN Based Speaker Verification

    论文地址:ECAPA-TDNN:在基于TDNN的说话人验证中强调通道注意.传播和聚集 论文代码:https://github.com/TaoRuijie/ECAPA-TDNN 引用格式:Desplan ...

  3. 浅谈Pytest中的marker

    浅谈Pytest中的marker 没有注册marker 我们写一个简单的测试 # test_demo.py import pytest @pytest.mark.login def test_demo ...

  4. 精美的web前端源码的特效

    1.JS自定义烟花特效 这是一款基于JS和Canvas的自定义烟花特效,初始化界面的时候特效是不带声效的绽放,当你点击顶部中间的播放,即可以看到美丽的烟火也可以听到烟花绽放的声音,让你脑海浮现过年团圆 ...

  5. Google_MapReduce中文版

    笔者最近在看MIT6.824的lab1,实验内容是实现一个简易的MapReduce.本篇文章是MapReduce论文的中文翻译. @Author:Akai-yuan @更新时间:2023/2/13 摘 ...

  6. 无法加载 DLL“*******.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。

    无法加载 DLL"Lib\WeWorkFinanceSdk.dll": 找不到指定的模块. (异常来自 HRESULT:0x8007007E). 网上查找了一大堆,没找到是什么问题 ...

  7. 我不想再传递 nameof 了

    有的时候抛出一个异常,我们需要知道是哪个方法抛出的异常.那么,我们可以通过传递 nameof 来获取调用者的方法名.但是,感觉很烦,每次都要传递 nameof.那么,有没有更好的方法呢? Caller ...

  8. Cesium点击改变entity/primitives颜色与恢复原色(三)

    2023-01-08 建筑物是primitives,两个娃娃是entity 加载娃娃代码: //粉色 var entity6 = viewer.entities.add({ id:6, positio ...

  9. 比较多普勒超声与临床缓解标准对RA放射学进展的预测效能

    比较多普勒超声与临床缓解标准对RA放射学进展的预测效能 de Miguel, et al. EULAR 2015. Present ID: FRI0586. 原文 译文 FRI0586 DOPPLER ...

  10. Vue2安装less版本过高问题,需要降级

    安装指定less版本解决: -D: 本地安装 -g: 全局安装 npm install less@3.9.0 less-loader@5.0.0 -D