一个类似 pytest 的 html 报告

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        table {
            border-collapse: collapse;
            width: 95%;
            margin: 0 auto;
        }
        table, th, td {
            border: 1px solid black;
        }
        .case-result {
            margin-top: 50px;
        }
        pre {
            white-space: pre-wrap;
            max-height: 600px;
            overflow: auto;
            font-size: 12px;
            background-color: #d7d7d7;
        }
        .hidden {
            display: none;
        }
    </style>

</head>
<body>
<table class="env">
    <thead>
        <tr>
            <th>配置名</th>
            <th>配置值</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>软件版本</td>
            <td>v1.0.0</td>
        </tr>
        <tr>
            <td>测试时间</td>
            <td>2025-10-20</td>
        </tr>
    </tbody>
</table>

<table class="case-result">
    <thead>
        <tr>
            <th>用例名称</th>
            <th style="width: 10%;">耗时(s)</th>
            <th style="width: 10%;">测试结果</th>
            <th>日志详情</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>用例1</td>
            <td>2</td>
            <td>成功</td>
            <td><button class="show_detail">显示/关闭详情</button></td>
        </tr>
        <tr class="detail hidden">
            <td colspan="4">
                <pre>
log
log
log
log
log
log
log
log
log
log
log
log
log
log
log
log
log
log
                </pre>
            </td>
        </tr>
                <tr>
            <td>用例2</td>
            <td>1</td>
            <td>成功</td>
            <td><button class="show_detail">显示/关闭详情</button></td>
        </tr>
        <tr class="detail hidden">
            <td colspan="4">
                <pre>
log
log
log
log
log
log
log
log
log
log
log
log
log
log
log
log
log
log
                </pre>
            </td>
        </tr>
    </tbody>
</table>
</body>
<script>
    let detail_btns = document.getElementsByClassName("show_detail")
    for(let btn of detail_btns){
        btn.addEventListener("click", ()=>{
            detail_elemnet = btn.parentNode.parentNode.nextElementSibling
            if(detail_elemnet.classList.contains("hidden")){
                detail_elemnet.classList.remove("hidden")
            }else{
                detail_elemnet.classList.add("hidden")
            }
        })
    }
</script>
</html>

显示效果

相关推荐
九皇叔叔10 小时前
MySQL ORDER BY 性能优化详解:Using filesort、联合索引、ASC/DESC 与覆盖索引
android·adb
OriginCoding11 小时前
用 AI Agent 协作完成一个 Android TOTP 应用:从需求边界到 v1.0.0
android·ai编程
XLYcmy12 小时前
HTML/CSS/JS 基础与 Vue 技术栈深度解析
java·前端·css·html·vue3·vue2·api
杉氧13 小时前
React 灵魂:深入剖析 Hooks 与副作用(Side Effects)陷阱
android·前端·react native
又见情义14 小时前
RK3568 + RTL8211F 网络唤醒(WOL)功能适配全记录
android·网络·驱动开发
用户09340777351414 小时前
HarmonyOS WPS Open SDK 实践:registerApp 鉴权与就绪门禁
android·typescript·harmonyos
jike_202614 小时前
会议离线录音APP:无网络记录能力对比
android·智能手机·语音识别
always_TT16 小时前
【Python 字符串格式化:format() 方法】
android·开发语言·python
恋猫de小郭16 小时前
AI 时代,一个优化 Flutter 的重复代码工具 Deslop
android·前端·flutter