代码拉取完成,页面将自动刷新
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@time : 2023/12/28
@Author : itestxs
@desc : 全局钩子函数配置
"""
import json
import time
from datetime import datetime
import pytest
from py.xml import html
from utils.global_vars import GlobalVars
from utils.logger import logger
from utils.notify.feishu_notify import feishu_notify
def pytest_addoption(parser):
""" 添加 --env 命令参数 """
parser.addoption('--testenv',
action='store',
default='test',
choices=['test', 'pro'],
help='环境参数'
)
def pytest_configure(config):
"""pytest 配置钩子函数"""
testenv = config.getoption('--testenv')
"""将命令的env值写入配置文件中"""
GlobalVars.update_global_vars(key="testenv", value=testenv)
def pytest_terminal_summary(terminalreporter, exitstatus, config): # noqa
""" 收集测试结果 """
_PASSED = len([i for i in terminalreporter.stats.get('passed', []) if i.when != 'teardown']) # noqa
_ERROR = len([i for i in terminalreporter.stats.get('error', []) if i.when != 'teardown'])
_FAILED = len([i for i in terminalreporter.stats.get('failed', []) if i.when != 'teardown'])
_SKIPPED = len([i for i in terminalreporter.stats.get('skipped', []) if i.when != 'teardown'])
_TOTAL = terminalreporter._numcollected # noqa
_STARTTIMES = terminalreporter._sessionstarttime
_TIMES = time.time() - _STARTTIMES # noqa
if _TOTAL > 0:
logger.info(f"用例总数: {_TOTAL}")
logger.info(f"用例总数: {_PASSED}")
logger.error(f"异常用例数: {_ERROR}")
logger.error(f"失败用例数: {_FAILED}")
logger.warning(f"跳过用例数: {_SKIPPED}")
logger.info("用例执行时长: %.2f" % _TIMES + " s")
_RATE = _PASSED / _TOTAL * 100
logger.info("用例成功率: %.2f" % _RATE + " %")
else:
logger.info(f"用例总数: {_TOTAL}")
start_datetime = datetime.fromtimestamp(_STARTTIMES)
formatted_datetime = start_datetime.strftime("%Y-%m-%d %H:%M:%S")
res = {"start_times":formatted_datetime,"total": _TOTAL, "success": _PASSED, "failed": _FAILED, "error": _ERROR, "skip": _SKIPPED, "successful": _RATE}
with open('./reports/result.json', 'w') as file:
json.dump(res, file)
feishu_notify(**res)
# 修改报告标题
def pytest_html_report_title(report):
report.title = "测试小生 pytest自动化测试报告"
# 使用钩子编辑Summary(总结)
def pytest_html_results_summary(prefix, summary, postfix):
prefix.extend([
html.p("框架联系人: 测试开发-测试小生")
])
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。