Python Hocust,如何从LoadTestShape访问自定义命令行参数
我为新命令行参数创建侦听器:Python Hocust,如何从LoadTestShape访问自定义命令行参数,python,listener,locust,Python,Listener,Locust,我为新命令行参数创建侦听器: @events.init_command_line_parser.add_listener def init_parser(parser): parser.add_argument("--stages", type=str, env_var="LOCUST_STAGES", help="It's working") 但我不知道如何访问这个值。 尝试类似于: @events.init.add_lis
@events.init_command_line_parser.add_listener
def init_parser(parser):
parser.add_argument("--stages", type=str, env_var="LOCUST_STAGES", help="It's working")
但我不知道如何访问这个值。
尝试类似于:
@events.init.add_listener
def _(environment, **kw):
os.environ['stages'] = environment.parsed_options.stages
但没有效果,因为命令:os.environ.get('stages')
不返回任何值
我应该如何得到这个值?特别是如果我只与其他人一起使用,比如:
locust -f locustfiles/file.py --tag some_tag --stages stages.json
您可以使用
self.runner.environment
(与用户/@task中的相同)访问LoadTestShape类中的蝗虫环境
所以你可以做一些像
def tick(self):
print(self.runner.environment.parsed_options.stages)
...
(注意:您需要1.4.4才能工作)要添加自定义参数,请通过CLI检查: 要在类Userinit中获取它,请使用:
print(self.environment.parsed_options.customarg)
然后像这样跑:
locust -f locustfile.py --customarg CUSTOM_VALUE --headless -u 10 -r 10 --run-time 5s
您可以通过下一种方式访问自定义参数值。 第一个-创建解析器变量:
import argparse
locust_parser_settings = argparse.ArgumentParser(
prog='locust',
usage='==SUPPRESS==',
description='\nUsage: locust [OPTIONS] [UserClass ...]\n\n',
formatter_class=argparse.RawDescriptionHelpFormatter,
conflict_handler='error',
add_help=True
)
然后编写钩子函数并返回参数值:
@events.init_command_line_parser.add_listener
def locust_add_option_and_get_option_value(parser):
parser.add_argument("--my-argument", type=str, env_var="LOCUST_MY_ARGUMENT", default="", help="It's working")
my_argument = parser.parse_known_args()[0].my_argument
return my_argument
最后,你应该强迫自己叫钩子:
my_custom_arg = locust_add_option_and_get_option_value(parser=locust_parser_settings)
environment.parsed\u options.stages
是值。为什么要将它添加到环境
字典中?目前我只看到在类内传递值的方法(从LoadTestShape继承)。Mb我错了,不知道,但这是一个快速的解决方案,必须工作,我可以检查谢谢。但它不起作用,因为LoadTestShape类没有属性-runner:AttributeError:'StagesShape'对象没有属性'runner
与我尝试在@task(FastHttpUser)下使用的self.environment.parsed_options.stages
时的情况相同,我刚刚发现这种行为仅在master中存在,尚未发布。可能是:)。无论如何谢谢,我会追踪的。目前,will use OST已在1.4.4Thanks中发布,但我看到了这个示例,它没有任何帮助。所有问题都出现在LoadTestShape类中,至少在以前的版本中,该类中没有环境字段(属性)
my_custom_arg = locust_add_option_and_get_option_value(parser=locust_parser_settings)