当前位置: 首页 > 知识库问答 >
问题:

如何将自定义参数传递给蝗虫测试类?

韩朝斑
2023-03-14

我目前正在使用环境变量向负载测试传递自定义参数。例如,我的测试类如下所示:

from locust import HttpLocust, TaskSet, task
import os

class UserBehavior(TaskSet):

    @task(1)
    def login(self):
        test_dir = os.environ['BASE_DIR']
        auth=tuple(open(test_dir + '/PASSWORD').read().rstrip().split(':')) 
        self.client.request(
           'GET',
           '/myendpoint',
           auth=auth
        )   

class WebsiteUser(HttpLocust):
    task_set = UserBehavior

然后,我将使用以下工具运行测试:

locust -H https://myserver --no-web --clients=500 --hatch-rate=500 --num-request=15000 --print-stats --only-summary

有没有更多的locust方式可以将自定义参数传递给locust命令行应用程序?

共有3个答案

阳念
2023-03-14

如果您想在高并发性下进行测试,建议不要在命令行中运行蝗虫。在--no-web模式下,您只能使用一个CPU内核,因此无法充分利用您的测试机器。

回到您的问题,在命令行中,没有其他方法可以将自定义参数传递给locust

甘西岭
2023-03-14

如今,可以向蝗虫添加自定义参数(最初提出这个问题时不可能,当时使用env-vars可能是最好的选择)。

自版本2.2以来,自定义参数甚至在分布式运行中转发给工人。

https://docs.locust.io/en/stable/extending-locust.html#custom-论据

from locust import HttpUser, task, events


@events.init_command_line_parser.add_listener
def _(parser):
    parser.add_argument("--my-argument", type=str, env_var="LOCUST_MY_ARGUMENT", default="", help="It's working")
    # Set `include_in_web_ui` to False if you want to hide from the web UI
    parser.add_argument("--my-ui-invisible-argument", include_in_web_ui=False, default="I am invisible")


@events.test_start.add_listener
def _(environment, **kw):
    print("Custom argument supplied: %s" % environment.parsed_options.my_argument)


class WebsiteUser(HttpUser):
    @task
    def my_task(self):
        print(f"my_argument={self.environment.parsed_options.my_argument}")
        print(f"my_ui_invisible_argument={self.environment.parsed_options.my_ui_invisible_argument}")
子车峰
2023-03-14

您可以使用likeenv

例如,envIP_ADDRESS=100.0.1.1locust-flocust-file.py--no-web--Client=5--hatch-不动产=1--num-请求=500,并在locust脚本中使用IP_ADDRESS访问其值100.0.1.1在这种情况下。

 类似资料:
  • 使用,并希望将常量/参数传递给自定义映射器 我的目的地具有 Map 类型的字段

  • 问题内容: 这在Django 1.9中用form_kwargs修复。 我有一个看起来像这样的Django表单: 我称这种形式的东西是这样的: 登录用户在哪里。这按预期工作。 我的问题是,我现在想将此单一表单转换为表单集。我不知道的是在创建表单集时如何将会员信息传递给各个表单。根据文档来制作一个表单集,我需要做这样的事情: 然后我需要这样创建它: 现在如何以这种方式将affiliate = requ

  • 问题内容: 我正在A中使用RUN指令安装rpm 但是,我想将值“ 2.3”作为参数传递。我的RUN指令应类似于: 哪里 问题答案: 您正在寻找和指导。这些是Docker 1.9中的新功能。查看https://docs.docker.com/engine/reference/builder/#arg。这将允许您添加到,然后使用构建。

  • 问题内容: 当我定义一个自定义类型时,基础类型的类型似乎对我是否可以按原样将其传递给函数还是需要对其进行转换有所不同。 问题是: 为什么和起作用,但不起作用? https://play.golang.org/p/buKNkrg5y- 在这里,当我运行此函数时,它会抱怨,尽管它是基础类型。但是当我打电话或他们成功运行时。 问题答案: 和 您的新类型是2种不同的不同类型。在预期的地方,您必须传递typ

  • 我是一个相当新的反应,这是一个我正在努力解决的问题。

  • 我使用的是spring ldap和spring boot starter安全性的组合。我已经配置了基本的设置,但仍在传递用户名和密码以进行身份验证。它总是试图验证应用程序中指定的默认凭据。财产。不管怎样,通过传递登录表单中给出的信誉,是否可以正确地做到这一点。 @覆盖受保护的无效配置(AuthenticationManagerBuilder auth)引发异常{ }