一个类似 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>

显示效果

相关推荐
怪兽20146 小时前
Handler中有Loop死循环,为什么没有阻塞主线程,原理是什么?
android·面试
雨白6 小时前
掌握协程的边界与环境:CoroutineScope 与 CoroutineContext
android·kotlin
木易 士心7 小时前
Android 开发核心知识体系与面试指南精简版
android·面试·职场和发展
一棵树73517 小时前
Android OpenGL ES初窥
android·大数据·elasticsearch
初级代码游戏8 小时前
MAUI劝退:安卓实体机测试
android
用户6600676685398 小时前
用HTML5 构建一个敲击乐钢琴
html
奔跑中的蜗牛6668 小时前
直播APP跨平台架构实践(二):KMP UI 与 Rust 下载引擎协作实践
android
沐怡旸8 小时前
【底层机制】【Android】AIDL原理与实现机制详解
android·面试
小仙女喂得猪9 小时前
2025 跨平台方案KMP,Flutter,RN之间的一些对比
android·前端·kotlin