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)