博客
关于我
python locust 性能测试:locust参数-保证并发测试数据唯一性,循环取数据
阅读量:800 次
发布时间:2023-03-05

本文共 1837 字,大约阅读时间需要 6 分钟。

Locust自动化测试脚本:cnblogs.com账户注册与登录验证

背景与目标

本文将介绍一个使用Locust框架编写的自动化测试脚本,用于对cnblogs.com的账户注册与登录功能进行验证。通过模拟用户行为,确保注册流程的稳定性和可靠性。

系统架构

1. 模块划分

  • UserBehavior类:负责用户注册相关的业务逻辑。
  • WebsiteUser类:定义了网站访问的基本配置,包括主机地址和任务集引用。

2. 数据管理

  • 队列机制:使用队列来管理用户数据,确保注册过程的有序性和并发处理能力。
  • 数据格式:每个用户数据包含用户名、密码、电子邮件和手机号码。

实现细节

1. 注册功能

from locust import TaskSet, task, HttpLocustimport queueclass UserBehavior(TaskSet):    @task    def test_register(self):        try:            data = self.locust.user_data_queue.get_nowait()            print(f'注册用户:{data["username"]}, 密码:{data["password"]}')            payload = {                'username': data['username'],                'password': data['password']            }            response = self.client.post('/user/signin?ReturnUrl=https%3A%2F%2Fwww.cnblogs.com%', data=payload)            self.locust.user_data_queue.put_nowait(data)            self.assert_response(status_code=200)        except queue.Empty:            print('账户数据已用完,测试结束。')            exit(0)

2. 登录验证

class WebsiteUser(HttpLocust):    host = 'https://passport.cnblogs.com'    task_set = UserBehavior    user_data_queue = queue.Queue()    def __init__(self):        self.user_data_queue = user_data_queue    @task    def login(self):        for index in range(100):            data = {                'username': f'test{index:04d}',                'password': f'pwd{index:04d}',                'email': f'test{index:04d}@debugtalk.test',                'phone': f'186{index:08d}'            }            self.user_data_queue.put_nowait(data)

3. 执行流程

  • 初始化队列并添加初始用户数据。
  • 启动Locust任务集进行注册和登录验证。
  • 确保队列中有足够的用户数据支持并发测试。
  • 性能优化

    • 队列类型:使用queue.Queue确保先进先出的原则,防止数据丢失。
    • 并发处理:通过队列机制实现并发注册,提升测试效率。
    • 异常处理:注册失败时,优雅退出测试,避免无效请求。

    测试结果

    通过运行脚本可以观察以下结果:

    • 成功注册:所有测试用户均能成功注册并登录。
    • 性能测试:在100个用户同时注册的情况下,系统性能表现良好。

    总结

    本文介绍了一个使用Locust框架的自动化测试脚本,用于cnblogs.com账户的注册与登录验证。通过队列管理和模拟用户行为,确保了系统的稳定性和可靠性。

    你可能感兴趣的文章
    python bert_gen.py 报错Unable to load weights from pytorch checkpoint file for......
    查看>>
    python binascii.Error: Incorrect padding
    查看>>
    Python bool() 函数能否为无效参数引发异常?
    查看>>
    Python C 程序子进程在“for line in iter“处挂起
    查看>>
    Python Celery:自动化测试平台定时任务必备的三方库
    查看>>
    python check_output 失败,退出状态为 1,但 Popen 适用于相同的命令
    查看>>
    Python CONNECT 4 CHECK WIN函数
    查看>>
    python cos,Python cos(90)和cos(270)不是0
    查看>>
    python进阶(4):Python 脚本文件重启自身进程
    查看>>
    python ctypes库中动态链接库加载方式
    查看>>
    python cv2 图像( np array )转 HObject
    查看>>
    python进阶(3):文件操作
    查看>>
    python cv2截取不规则区域图片
    查看>>
    python CV2裁剪图片并保存
    查看>>
    python进阶(2):pyecharts使用
    查看>>
    python cv2读取rtsp实时码流按时生成连续视频文件
    查看>>
    Python Dataframe Groupby Mean和Std
    查看>>
    python datetime
    查看>>
    python datetime笔记
    查看>>
    python day01
    查看>>