跳转至主要内容

The Road to Growth

request请求封装

admin
最后编辑于 2025 年 4 月 19 日
import requests
from common.log_set import RecordLog
import logging


RecordLog.init_logging()
logger = logging.getLogger(__name__)

class RequestUtil:
    sess = requests.Session()  # 会话对象,自动保持cookies
    # logger = RecordLog.init_logging()  # 获取日志器单例
    public_params = {}  # 类级别公共参数
    RecordLog.init_logging()
    logger = logging.getLogger(__name__)

    def send_request(self, **kwargs):
        """发送请求并记录全链路日志"""
        self._preprocess_params(kwargs)  # 参数预处理

        # --- 记录请求日志 ---
        self.logger.info('start......')
        self.logger.info("加载请求信息......")
        for key, value in kwargs.items():
            self.logger.debug(f"Request Param: {key} = {value}")  # DEBUG级别日志

        # --- 发送请求 ---
        try:
            self.logger.info("开始发送请求......")
            response = self.sess.request(**kwargs)  # 解包参数字典
        except Exception as e:
            self.logger.error(f"Request failed: {str(e)}")  # 记录错误日志
            raise  # 重新抛出异常,保持原有堆栈信息

        # --- 记录响应日志 ---
        self.logger.info(f"响应码 [Status: {response.status_code}]")
        self.logger.debug(f"响应头: {response.headers}")
        self.logger.debug(f"响应信息: {response.text[:500]}......只显示500字符")  # 截断防止日志过大

        return response

    def _preprocess_params(self, kwargs):
        """参数预处理(私有方法)"""
        # 合并公共参数
        if 'params' in kwargs:
            kwargs['params'].update(self.public_params)  # 原地修改参数字典

        # 自动处理文件上传
        if 'files' in kwargs:
            kwargs['files'] = {
                name: open(path, 'rb')  # 以二进制模式打开文件
                for name, path in kwargs['files'].items()
            }

Previous Post

自动化日志封装 

Next Post

测试基础 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注