加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
conftest.py 2.65 KB
一键复制 编辑 原始数据 按行查看 历史
yangjunguang1 提交于 2024-02-26 11:04 . 提交代码
#!/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("框架联系人: 测试开发-测试小生")
])
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化