locust 快速入门--异常(Exceptions)与失败(Failures)

背景:

  使用locust进行压测的时候,服务器响应已经异常了,但是从UI页面上看到的还是正常的响应。直至服务完全挂掉,才会出现异常信息。

  locust认为HTTP响应代码是OK(<400)是成功的。实际服务的响应代码是200时,有些服务响应的内容异常了。因此需要根据响应内容,自定义失败,更方便的通过图表数据判断压测结果。

  在接口测试时,我们一般会使用assert进行判断。基于locust对失败判断逻辑,不会将异常响应做为失败的响应。
locust 快速入门--异常(Exceptions)与失败(Failures)_第1张图片locust 快速入门--异常(Exceptions)与失败(Failures)_第2张图片

自定义失败响应:

  • 关键代码
    • 设置响应 catch_response=True
    • 自定义异常响应 response.failure()

示例代码:

import os
from logging import getLogger

from locust import HttpUser
from locust import TaskSet
from locust import events
from locust import task
from locust.log import setup_logging

setup_logging("INFO", None)
logger = getLogger(os.path.basename(__file__))


class Behavior(TaskSet):
    def on_start(self):
        logger.info('开始访问活动')

    @task
    def 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('用户结束行动')

你可能感兴趣的:(locust,测试,python)