背景:
使用locust
进行压测的时候,服务器响应已经异常了,但是从UI页面上看到的还是正常的响应。直至服务完全挂掉,才会出现异常信息。
locust
认为HTTP响应代码是OK(<400)是成功的。实际服务的响应代码是200时,有些服务响应的内容异常了。因此需要根据响应内容,自定义失败,更方便的通过图表数据判断压测结果。
在接口测试时,我们一般会使用assert
进行判断。基于locust
对失败判断逻辑,不会将异常响应做为失败的响应。
自定义失败响应:
- 关键代码
- 设置响应
catch_response=True
- 自定义异常响应
response.failure()
- 设置响应
示例代码:
import os
from logging import getLoggerfrom locust import HttpUser
from locust import TaskSet
from locust import events
from locust import task
from locust.log import setup_loggingsetup_logging("INFO", None)
logger = getLogger(os.path.basename(__file__))class Behavior(TaskSet):def on_start(self):logger.info('开始访问活动')@taskdef index(self):with self.client.get("/", catch_response=True) as response:json_data = response.json()if json_data['code'] != 1:response.failure(f'自定义响应失败: code != 1')assert json_data['code'], f'响应异常信息: code != 1'def on_stop(self):logger.info('结束访问活动')class MyUser(HttpUser):host = "https://docs.locust.io"tasks = [Behavior]def on_start(self):logger.info('用户开始行动')def on_stop(self):logger.info('用户结束行动')