如何解决无法停止测试,@events.test_stop.add_listener locust
如果失败百分比或平均响应时间超过 test_stop 中定义的值,我将无法停止测试。 以下是示例代码:-
@events.test_stop.add_listener
def results(environment,**kw):
if environment.stats.total.fail_ratio > 0.01:
logging.error("Test failed due to failure ratio > 1%")
environment.process_exit_code = 1
elif environment.stats.total.avg_response_time > 2:
logging.error("Test failed due to average response time ratio > 200 ms")
environment.process_exit_code = 1
elif environment.stats.total.get_response_time_percentile(0.95) > 8:
logging.error("Test failed due to 95th percentil response time > 800 ms")
environment.process_exit_code = 1
else:
environment.process_exit_code = 0
@task
def osp_pick(self):
return super().request(
name="pick",json_file="data/pick.json",ssm=self.ssm,my_task=self,)
class StockTransfer(HttpUser):
host = "https://zz-zz.dev.zz.zz.zz.com" # Change this
tasks = [Handler]
我正在使用以下命令从终端运行测试:-
locust -f --headless -u 1000 -r 100 --run-time 2m
命令按预期工作,测试运行了 2 分钟,但如果错误百分比 > 0.01 或平均响应时间 > 2 秒,测试不会失败
解决方法
查看 locust-plugins 的 --check-fail-ratio
以了解实现这一目标的经过实战测试的方法:
https://github.com/SvenskaSpel/locust-plugins#command-line-options
或者,如果您想在实际测试中运行检查并在失败时中断它,您可以使用后台greenlet:
def checker(environment):
while not environment.runner.state in [STATE_STOPPING,STATE_STOPPED,STATE_CLEANUP]:
time.sleep(1)
if environment.runner.stats.total.fail_ratio > 0.2:
logging.info(f"fail ratio was {environment.runner.stats.total.fail_ratio},quitting")
environment.process_exit_code = 2
environment.runner.quit()
return
@events.init.add_listener
def on_locust_init(environment,**_kwargs):
if not isinstance(environment.runner,WorkerRunner):
gevent.spawn(checker,environment)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。