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)]

    # 添加到隊列
    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:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM