zoukankan      html  css  js  c++  java
  • Locust性能测试5-参数化批量注册

    前言

    实现场景:所有并发虚拟用户共享同一份测试数据,并且保证虚拟用户使用的数据不重复。
    例如,模拟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)]

    <span class="hljs-comment"># 添加到队列</span>
    telqueue = queue.Queue()
    <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> 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/9642242.html

  • 相关阅读:
    设计模式
    包装类
    php 闭包的理解
    is_null empty isset等的判定
    PHP基础一 $this ,static 和 self的区别
    lumen安装踩过得坑
    composer的使用和安装
    使用submine来写c++
    php 和 thinkphp中的常量一览
    路径问题 ./ / ../ 空 的区别
  • 原文地址:https://www.cnblogs.com/myxt/p/12267792.html
Copyright © 2011-2022 走看看