【发布时间】:2021-09-13 08:57:56
【问题描述】:
我有一个 locust 脚本中的任务,在运行数百个用户的任务之前,我希望另一个操作可以更改 var "user_var",以便在任务运行时可以使用 "user_var" 的新值。
但不幸的是,当我运行脚本时,结果是不同的。 on_test_start 中的“user_var”已被更改,在任务中,它的值仍然为零。
我打印了var id,它不一样。那么发生了什么,有人可以告诉我吗?谢谢
代码如下
base_url="http://baidu.com"
user_var = 0
print("init var id:{}".format(id(user_var)))
@events.test_start.add_listener
def on_test_start(environment,**kwargs):
global user_var
user_var = 1
print("method var id:{}".format(id(user_var)))
print("user_var:{}".format(user_var))
class MyService(HttpUser):
wait_time=between(1,2)
@task()
def points_acquire(self):
print("class var id:{}".format(id(user_var)))
print("user_var:{}".format(user_var))
if __name__=='__main__':
run_script=os.path.basename(__file__)
master_cmd='start locust -f {} --host={} --master '.format(run_script,base_url)
worker_cmd=' && start locust -f {} --worker'.format(run_script)
total_cmd=master_cmd+worker_cmd*1
os.system(total_cmd)
【问题讨论】:
-
events.test_start 过去不会在 master 上触发。它已修复,可能在 2.0 或其他版本中。