Allure 自动写入请求 + 响应详情工具笔记

6 阅读1分钟

1,Allure报告工具……………………………………………………

import allure
import json
def attach_request(url, method, headers=None, params=None, json=None):
    """
    把【请求信息】写入 Allure 报告
    自动展示:URL、方法、请求头、参数、请求体
    """
    request_info = {
        "请求URL": url,
        "请求方法": method,
        "请求头": headers,
        "请求参数": params,
        "请求体": json
    }

    # 格式化 JSON,让报告好看 缩进为2  允许中文正常显示不乱码
    content = json.dumps(request_info, indent=2, ensure_ascii=False)

    # 写入 Allure 报告
    # 1. 附加 JSON(请求/响应)
    # allure.attach(body, "请求数据", allure.attachment_type.JSON)
    # 2. 附加文本
    # allure.attach(body, "日志", allure.attachment_type.TEXT)
    # 3. 附加截图(UI自动化)
    # allure.attach(body, "截图", allure.attachment_type.PNG)

    allure.attach(
        body=content, # 要放进去的内容(JSON字符串)
        name="请求详情", # 在报告里显示的标题
        attachment_type=allure.attachment_type.JSON # 类型:JSON
    )

def attach_response(response):
    """
    把【响应信息】写入 Allure 报告
    自动展示:状态码、响应头、响应体
    """
    response_info = {
        "状态码": response.status_code,
        "响应头": dict(response.headers),
        "响应体": response.text
    }

    content = json.dumps(response_info, indent=2, ensure_ascii=False)

    allure.attach(
        body=content,
        name="响应详情",
        attachment_type=allure.attachment_type.JSON
    )

2,调用详情……………………………………………………………………………………

def get(self, path, params=None, **kwargs):
    url = Env.base_url() + path

    # ===== 写入请求到报告 =====
    attach_request(url, "GET", self.session.headers, params=params)

    resp = self.session.get(url, params=params, **kwargs)

    # ===== 写入响应到报告 =====
    attach_response(resp)

    return resp

def post(self, path, json=None, **kwargs):
    url = Env.base_url() + path

    # ===== 写入请求到报告 =====
    attach_request(url, "POST", self.session.headers, json=json)

    resp = self.session.post(url, json=json, **kwargs)

    # ===== 写入响应到报告 =====
    attach_response(resp)

    return resp