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