实现场景:全部并发虚拟用户共享同一份测试数据,而且保证虚拟用户使用的数据不重复。
例如,模拟10用户并发注册帐号,总共有100个手机号,要求注册帐号不重复,注册完毕后结束测试html
虚拟用户 | locust1 | locust2 | locust3 | locust4 | locust5 | locust6 | locust7 | locust8 | locust9 | locust10 |
---|---|---|---|---|---|---|---|---|---|---|
共享数据 | tel1 | tel2 | tel3 | tel4 | tel5 | tel6 | tel7 | ...... | tel99 | tel100 |
虚拟用户数,能够在启动的时候设置,这里先装备好注册须要用到的手机号,能够用list生成python
# 生成测试手机号 demo = 13812120000 teldatas = [str(demo+i) for i in range(100)] print(teldatas)
将测试数据加到队列web
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模型,具体的注册接口替换过去就能够了并发
# 保存为 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命令行启动post
$ locust -f locustfile4.py测试
打开web页面,输入10个用户, 能够看到控制台的打印spa
[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:命令行
来源: http://www.javashuo.com/article/p-thujqibl-hq.htmlcode
其余插入队列的方法见: http://www.javashuo.com/article/p-equuoxuv-ho.htmlhtm