当 "on_test_start" 存在时,蝗虫任务方法无法获取全局值
locust task method can't get the global value when "on_test_start" exist
我在 Locust 脚本中有一个任务,在任务 运行 数百个用户之前,我希望另一个操作可以更改变量“user_var”,以便“user_var”当任务 运行.
时可以使用 s 的新值
但不幸的是,当我运行脚本时,结果是不同的。
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)
根据事件的定义:
"""
Fired when a new load test is started. It's not fired again if the number of
users change during a test. When running locust distributed the event is only fired
on the master node and not on each worker node.
"""
https://docs.locust.io/en/1.4.0/writing-a-locustfile.html#test-start-and-test-stop
因此您将变量初始化为 0,并且事件不会在工作节点中触发,因此它保持为 0,在主节点中事件触发并更改值。
编辑:似乎这背后的逻辑自上次我检查后已经改变,如果你更新你的蝗虫版本它可能会工作
我在 Locust 脚本中有一个任务,在任务 运行 数百个用户之前,我希望另一个操作可以更改变量“user_var”,以便“user_var”当任务 运行.
时可以使用 s 的新值但不幸的是,当我运行脚本时,结果是不同的。 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)
根据事件的定义:
""" Fired when a new load test is started. It's not fired again if the number of users change during a test. When running locust distributed the event is only fired on the master node and not on each worker node. """
https://docs.locust.io/en/1.4.0/writing-a-locustfile.html#test-start-and-test-stop
因此您将变量初始化为 0,并且事件不会在工作节点中触发,因此它保持为 0,在主节点中事件触发并更改值。
编辑:似乎这背后的逻辑自上次我检查后已经改变,如果你更新你的蝗虫版本它可能会工作