[英]Create reusable testing scenarios (smoke, load, etc.) that can be triggered by a custom command line parameter using Locust
我现在有两个目标:
我相信这应该是可能的(至少我知道如何在 k6 中做到这一点),但是很难找到解决方案。
因此,以下代码应使用负载场景运行所有测试:
locust --host=https://myhost.com -f=locustfile.py --scenario=load
这是我项目的一个片段,我希望最终的解决方案看起来像这样:
├── helpers
│ ├── events.py
│ ├── scenarios.py
├── tests
│ ├── locustfile.py
蝗虫文件.py
class FirstTest(TaskSet):
@task
def first_task(self):
...
do_something
...
class FirstTestUser(FastHttpUser):
tasks = [FirstTest]
场景.py
class Smoke(LoadTestShape):
stages = [
{"duration": 60, "users": 10, "spawn_rate": 10}
]
def tick(self):
run_time = self.get_run_time()
for stage in self.stages:
if run_time < stage["duration"]:
tick_data = (stage["users"], stage["spawn_rate"])
return tick_data
return None
class Load(LoadTestShape):
stages = [
{"duration": 60, "users": 10, "spawn_rate": 10},
{"duration": 120, "users": 70, "spawn_rate": 10},
{"duration": 600, "users": 250, "spawn_rate": 10},
]
def tick(self):
run_time = self.get_run_time()
for stage in self.stages:
if run_time < stage["duration"]:
tick_data = (stage["users"], stage["spawn_rate"])
return tick_data
return None
事件.py
@events.init_command_line_parser.add_listener
def _(parser):
parser.add_argument("--scenario", type=str, env_var="LOCUST_SCENARIO", default="")
@events.test_start.add_listener
def _(environment, **kw):
if environment.parsed_options.scenario == "smoke":
print("smoke scenario") # for testing purposes only
scenarios.Smoke
elif environment.parsed_options.scenario == "load":
scenarios.Load
我认为将侦听器添加到配置可能会有所帮助。 这只是一个建议,考虑到我尝试过使用它,但到目前为止还没有想出可行的方法。
如果您将不同的负载形状放在它们自己的文件中会怎样。 然后你可以做(使用Locust 2.11或更高版本)
locust -f locustfile.py,smoke.py
或者
locust -f locustfile.py,load.py
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.