如何将自定义参数传递给蝗虫测试 class?
how to pass custom parameters to a locust test class?
我目前正在使用环境变量将自定义参数传递给我的负载测试。例如,我的测试 class 看起来像这样:
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
命令行应用程序?
如果要测试高并发,不建议运行在命令行中使用locust。如在--no-web
模式下,只能使用一个CPU核心,这样就不能充分利用你的测试机。
回到你的问题,没有其他方法可以在命令行中将自定义参数传递给 locust
。
您可以像 env <parameter>=<value> locust <options>
一样使用并在 locust 脚本中使用 <parameter>
来使用它的值
例如,
env IP_ADDRESS=100.0.1.1 locust -f locust-file.py --no-web --clients=5 --hatch-rate=1 --num-request=500
并在 locust 脚本中使用 IP_ADDRESS 来访问其值,在本例中为 100.0.1.1。
现在可以向 Locust 添加自定义参数(最初问这个问题时是不可能的,当时使用环境变量可能是最好的选择)。
从 2.2 版本开始,自定义参数甚至可以在分布式 运行.
中转发给工作人员
https://docs.locust.io/en/stable/extending-locust.html#custom-arguments
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}")
我目前正在使用环境变量将自定义参数传递给我的负载测试。例如,我的测试 class 看起来像这样:
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
命令行应用程序?
如果要测试高并发,不建议运行在命令行中使用locust。如在--no-web
模式下,只能使用一个CPU核心,这样就不能充分利用你的测试机。
回到你的问题,没有其他方法可以在命令行中将自定义参数传递给 locust
。
您可以像 env <parameter>=<value> locust <options>
一样使用并在 locust 脚本中使用 <parameter>
来使用它的值
例如,
env IP_ADDRESS=100.0.1.1 locust -f locust-file.py --no-web --clients=5 --hatch-rate=1 --num-request=500
并在 locust 脚本中使用 IP_ADDRESS 来访问其值,在本例中为 100.0.1.1。
现在可以向 Locust 添加自定义参数(最初问这个问题时是不可能的,当时使用环境变量可能是最好的选择)。
从 2.2 版本开始,自定义参数甚至可以在分布式 运行.
中转发给工作人员https://docs.locust.io/en/stable/extending-locust.html#custom-arguments
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}")