问题描述
我有这段代码可以很好地在locust.io部署的服务器上第一次运行,但是当我开始/停止进行新的运行时,关于列表,我会遇到多个错误。你们可以帮我骑自行车吗?
from locust import HttpUser,task,between,SequentialTaskSet,events
import uuid
import json
import csv
import logging,sys,random,os
with open('somecsv.csv','r') as f:
reader = csv.reader(f)
user= list(reader)
#print(user)
class somethingclass(SequentialTaskSet):
def on_start(self):
if len(user) > 0:
self.id= str(user.pop()).strip("][''")
@task
def someting(self):
do something with self.id request
@task
def someting2(self):
do something with self.id request
class Main(HttpUser):
wait_time = between(5,10)
tasks = [somethingclass]
def _init_(self,*args,**kwargs):
super(Main,self)._init_(*args,**kwargs)
错误是:
[2020-08-18 23:06:50,899] PC / ERROR / locust.user.task:“ somethingclass”对象没有属性“ id” 追溯(最近一次通话): 运行中的文件“ c:\ windows \ system32 \ src \ locust \ locust \ user \ task.py”,第284行 self.execute_next_task() 在execute_next_task中,文件“ c:\ windows \ system32 \ src \ locust \ locust \ user \ task.py”,第309行 self.execute_task(self._task_queue.pop(0)) 在execute_task中的文件“ c:\ windows \ system32 \ src \ locust \ locust \ user \ task.py”,第321行 任务(个体) 文件“ C:\ Users \ user \ Desktop \ Work \ Chipico Chip Transfer \ chiptransfer_load.py”,第44行 “ uuid”:'%s'%self.id, AttributeError:“ somethingclass”对象没有属性“ id”
解决方法
您可以使用test_start and test_stop events重置user
数据。
from locust import User,task,constant,TaskSet,events
from logging import getLogger
import uuid
logger = getLogger("test")
user = []
@events.test_start.add_listener
def start_something(**kwargs):
logger.info("Starting test...")
user.append(uuid.uuid4())
class somethingclass(TaskSet):
@task
def do_something(self):
logger.info(f"User: {user}")
class Main(User):
wait_time = constant(2)
tasks = [somethingclass]
这为我提供了以下输出,其中包括多次停止和开始测试。
[2020-08-18 16:14:12,549] INFO/locust.main: Starting web interface at http://:8089
[2020-08-18 16:14:12,557] INFO/locust.main: Starting Locust 1.1.1
[2020-08-18 16:14:15,759] INFO/test: Starting test...
[2020-08-18 16:14:15,759] INFO/locust.runners: Hatching and swarming 1 users at the rate 1 users/s (0 users already running)...
[2020-08-18 16:14:15,759] INFO/locust.runners: All users hatched: Main: 1 (0 already running)
[2020-08-18 16:14:15,760] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd')]
[2020-08-18 16:14:17,764] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd')]
[2020-08-18 16:14:19,765] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd')]
[2020-08-18 16:14:21,767] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd')]
[2020-08-18 16:14:28,674] INFO/test: Starting test...
[2020-08-18 16:14:28,675] INFO/locust.runners: Hatching and swarming 1 users at the rate 1 users/s (0 users already running)...
[2020-08-18 16:14:28,675] INFO/locust.runners: All users hatched: Main: 1 (0 already running)
[2020-08-18 16:14:28,675] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd'),UUID('c061117e-f585-4da6-8188-59a0e1ff8acb')]
[2020-08-18 16:14:30,679] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd'),UUID('c061117e-f585-4da6-8188-59a0e1ff8acb')]
[2020-08-18 16:14:32,682] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd'),UUID('c061117e-f585-4da6-8188-59a0e1ff8acb')]
[2020-08-18 16:14:34,688] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd'),UUID('c061117e-f585-4da6-8188-59a0e1ff8acb')]
[2020-08-18 16:14:38,426] INFO/test: Starting test...
[2020-08-18 16:14:38,427] INFO/locust.runners: Hatching and swarming 1 users at the rate 1 users/s (0 users already running)...
[2020-08-18 16:14:38,427] INFO/locust.runners: All users hatched: Main: 1 (0 already running)
[2020-08-18 16:14:38,428] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd'),UUID('c061117e-f585-4da6-8188-59a0e1ff8acb'),UUID('cfd2a456-87d4-4cb2-b7d2-939bb1dfc560')]
[2020-08-18 16:14:40,433] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd'),UUID('cfd2a456-87d4-4cb2-b7d2-939bb1dfc560')]
,
从蝗虫导入用户,任务,常量,任务集,事件 从日志导入getLogger 导入uuid
logger = getLogger(“ test”) 用户= []
@ events.test_start.add_listener def start_something(** kwargs): logger.info(“正在开始测试...”) user.append(uuid.uuid4())
class somethingclass(TaskSet): @任务 def do_something(自己): logger.info(f“用户:{user}”)
Class Main(User): wait_time =常量(2) 任务= [somethingclass]
是正确答案