|
@@ -1,481 +0,0 @@
|
|
|
-<!DOCTYPE html>
|
|
|
-<html>
|
|
|
- <head>
|
|
|
- <title>测试报告</title>
|
|
|
- <meta charset="UTF-8">
|
|
|
- <style>body {
|
|
|
- font-family: consolas, Verdana, sans-serif;
|
|
|
- font-size: .95em;
|
|
|
- color: #696e71;
|
|
|
- display: grid;
|
|
|
- grid-template-columns: 1fr 5rem;
|
|
|
-}
|
|
|
-
|
|
|
-.main_section {
|
|
|
- width: 90%;
|
|
|
- margin: 0 auto;
|
|
|
-}
|
|
|
-
|
|
|
-#float_menu{
|
|
|
- position:fixed;
|
|
|
- top:0;
|
|
|
- right:0;
|
|
|
- text-align: center;
|
|
|
-}
|
|
|
-
|
|
|
-#float_menu .menu-item {
|
|
|
- cursor: pointer;
|
|
|
- padding: .5em;
|
|
|
- margin: .5em 0;
|
|
|
- color: #c08580;
|
|
|
- background-color: #f8f0ef;
|
|
|
- font-size: 1.2em;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-.result{
|
|
|
- display: flex;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-.result_table{
|
|
|
- border-collapse: collapse;
|
|
|
- border: 1px solid #f0e0e5;
|
|
|
- width: 30em;
|
|
|
- text-align: center;
|
|
|
- font-size: 1.0em;
|
|
|
-}
|
|
|
-
|
|
|
-.result_table td{
|
|
|
- border: 1px solid #f0e0e5;
|
|
|
- padding: .3em;
|
|
|
-}
|
|
|
-
|
|
|
-.result_barchart{
|
|
|
- width: 30em;
|
|
|
- margin: 0 5em 0 5em;
|
|
|
-}
|
|
|
-
|
|
|
-.barchar_item{
|
|
|
- margin: 2.5rem 0;
|
|
|
-}
|
|
|
-
|
|
|
-.barchart_barbox {
|
|
|
- margin: 0.5em 0;
|
|
|
- width: 100%;
|
|
|
- background-color: #fff;
|
|
|
- border: 1px solid #86c2dd;
|
|
|
- border-radius: .2em;
|
|
|
-}
|
|
|
-
|
|
|
-.barchart_bar {
|
|
|
- text-align: right;
|
|
|
- height: 1.2rem;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-.h3_button {
|
|
|
- margin: 1.5em;
|
|
|
- cursor: pointer;
|
|
|
- color: #03a9f4;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-.info
|
|
|
-{
|
|
|
- white-space:pre-wrap;
|
|
|
- margin: .8em 1.5em;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-.error-info
|
|
|
-{
|
|
|
- color: #a64747
|
|
|
-}
|
|
|
-
|
|
|
-.suite_dir {
|
|
|
- margin: 1em .2em;
|
|
|
- padding: .3em;
|
|
|
- /* background-color: #dfeff6; */
|
|
|
- border: 1px solid #bcd8e4;
|
|
|
-}
|
|
|
-.suite_file {
|
|
|
- margin: 1em .2em;
|
|
|
- padding: .3em;
|
|
|
- border: 1px solid #bcd8e4;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-.case {
|
|
|
- margin: 1em .2em;
|
|
|
- /* padding: .3em; */
|
|
|
- border: 1px solid #e7d4d4;
|
|
|
-}
|
|
|
-
|
|
|
-.case_class_path{
|
|
|
- margin: 0em 1em;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-.folder_header {
|
|
|
- padding: .2em .7em;
|
|
|
- background-color: #fffaf9;
|
|
|
- cursor: pointer;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-.setup{
|
|
|
- margin: .2em;
|
|
|
- /* padding: .3em; */
|
|
|
- /* border: 1px solid #e7d4d4; */
|
|
|
-}
|
|
|
-.teardown{
|
|
|
- margin: .2em;
|
|
|
- /* padding: .3em;*/
|
|
|
- /* border: 1px solid #e7d4d4; */
|
|
|
-}
|
|
|
-.test_steps{
|
|
|
- margin: .2em;
|
|
|
- padding: .3em;
|
|
|
- /* border: 1px solid #e7d4d4; */
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-.label {
|
|
|
- display: inline-block;
|
|
|
- padding: .1em .5em;
|
|
|
- font-size: .88em;
|
|
|
- letter-spacing: 1px;
|
|
|
- white-space: nowrap;
|
|
|
- color: #0d6ebc;
|
|
|
- border-radius: .2em;
|
|
|
- min-width: 5em;
|
|
|
- margin-right: 2em;
|
|
|
- font-family: consolas;
|
|
|
-}
|
|
|
-
|
|
|
-/* .suite_setup .label{
|
|
|
- color: #219e26 ;
|
|
|
-}
|
|
|
-.suite_teardown .label{
|
|
|
- color: #219e26;
|
|
|
-} */
|
|
|
-
|
|
|
-
|
|
|
-/* .case.pass .casename{
|
|
|
- color: #329132 ;
|
|
|
-} */
|
|
|
-.case.pass .caselabel{
|
|
|
- color: white;
|
|
|
- background-color: #3b9e3f;
|
|
|
-}
|
|
|
-/* .case.fail .casename{
|
|
|
- color: #a64747;
|
|
|
-} */
|
|
|
-.case.fail .caselabel{
|
|
|
- color: white;
|
|
|
- background-color: #a64747;
|
|
|
-}
|
|
|
-/* .case.abort .casename{
|
|
|
- color: #953ab7;
|
|
|
-} */
|
|
|
-.case.abort .caselabel{
|
|
|
- color: white;
|
|
|
- background-color: #9c27b0;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-.case_step {
|
|
|
- margin: .8em;
|
|
|
-}
|
|
|
-.checkpoint_pass {
|
|
|
- margin: .8em;
|
|
|
-}
|
|
|
-.checkpoint_fail {
|
|
|
- margin: .8em;
|
|
|
-}
|
|
|
-
|
|
|
-.case_step .tag{
|
|
|
- color: #2196f3;;
|
|
|
- margin: .3em 1em .3em 0;
|
|
|
- padding: .1em .3em;
|
|
|
- font-size: .92em;
|
|
|
-}
|
|
|
-
|
|
|
-.checkpoint_pass .tag{
|
|
|
- color: #009806;
|
|
|
- margin:.3em 1em .3em .5em;
|
|
|
- padding: .1em .3em;
|
|
|
- font-size: .92em;
|
|
|
-}
|
|
|
-.checkpoint_fail .tag{
|
|
|
- color: #9c2020;
|
|
|
- margin:.3em 1em .3em .5em;
|
|
|
- padding: .1em .3em;
|
|
|
- font-size: .92em;
|
|
|
-}
|
|
|
-
|
|
|
-.screenshot {
|
|
|
- border: 1px solid #86c2dd;
|
|
|
-}
|
|
|
-
|
|
|
-.executetime {
|
|
|
- float: right;
|
|
|
-}</style>
|
|
|
- <script type="text/javascript">var FOLDER_ALL_CASES = false //是否为精简模式的标记
|
|
|
-var ERROR_INFOS = []; // 错误信息列表
|
|
|
-var current_error_idx = -1;
|
|
|
-
|
|
|
-// 页面加载后执行的函数
|
|
|
-window.addEventListener("load", function(){
|
|
|
- // 所有 .folder_header 添加点击事件处理
|
|
|
- let folderHeaderEles = document.querySelectorAll(".folder_header");
|
|
|
- folderHeaderEles.forEach(function(ele) {
|
|
|
- ele.addEventListener("click", function(event) {
|
|
|
- let fb = event.target.closest('.folder_header').nextElementSibling;
|
|
|
- fb.style.display = fb.style.display === 'none' ? 'block' : 'none'
|
|
|
- });
|
|
|
- });
|
|
|
-
|
|
|
- // 找到所有的错误信息对象
|
|
|
- ERROR_INFOS = document.querySelectorAll(".error-info");
|
|
|
-});
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-function toggle_folder_all_cases(){
|
|
|
- let eles = document.querySelectorAll(".folder_body");
|
|
|
-
|
|
|
- FOLDER_ALL_CASES = !FOLDER_ALL_CASES;
|
|
|
- document.getElementById('display_mode').innerHTML = FOLDER_ALL_CASES? "Detail" : "Summary"
|
|
|
-
|
|
|
- for (const ele of eles){
|
|
|
- ele.style.display = FOLDER_ALL_CASES? "none": "block"
|
|
|
- }
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-function previous_error(){
|
|
|
- // 查找错误必须是详细模式
|
|
|
- if (FOLDER_ALL_CASES)
|
|
|
- toggle_folder_all_cases()
|
|
|
-
|
|
|
- current_error_idx -= 1;
|
|
|
- if (current_error_idx<0)
|
|
|
- current_error_idx = 0
|
|
|
-
|
|
|
-
|
|
|
- let error = ERROR_INFOS[current_error_idx];
|
|
|
-
|
|
|
- error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
|
|
|
-
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-function next_error(){
|
|
|
-
|
|
|
- // 查找错误必须是详细模式
|
|
|
- if (FOLDER_ALL_CASES)
|
|
|
- toggle_folder_all_cases()
|
|
|
-
|
|
|
- current_error_idx += 1;
|
|
|
- if (current_error_idx > ERROR_INFOS.length-1)
|
|
|
- current_error_idx = ERROR_INFOS.length-1
|
|
|
-
|
|
|
- let error = ERROR_INFOS[current_error_idx];
|
|
|
-
|
|
|
- error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
|
|
|
-
|
|
|
-}</script>
|
|
|
- </head>
|
|
|
- <body>
|
|
|
- <div class="main_section">
|
|
|
- <h1 style="font-family: auto">测试报告</h1>
|
|
|
- <h3>统计结果</h3>
|
|
|
- <div class="result">
|
|
|
- <table class="result_table">
|
|
|
- <tbody>
|
|
|
- <tr>
|
|
|
- <td>hytest 版本</td>
|
|
|
- <td>0.8.11</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>开始时间</td>
|
|
|
- <td>2023/07/06 16:05:20</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>结束时间</td>
|
|
|
- <td>2023/07/06 16:05:20</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>耗时</td>
|
|
|
- <td>0.280 秒</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>预备执行用例数量</td>
|
|
|
- <td>1</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>实际执用例行数量</td>
|
|
|
- <td>1</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>通过</td>
|
|
|
- <td>1</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>失败</td>
|
|
|
- <td style="">0</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>异常</td>
|
|
|
- <td style="">0</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>阻塞</td>
|
|
|
- <td style="">0</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>套件初始化失败</td>
|
|
|
- <td style="">0</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>套件清除 失败</td>
|
|
|
- <td style="color:red">1</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>用例初始化失败</td>
|
|
|
- <td style="">0</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>用例清除 失败</td>
|
|
|
- <td style="color:red">1</td>
|
|
|
- </tr>
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
- <div class="result_barchart">
|
|
|
- <div class="barchar_item">
|
|
|
- <span>用例通过 100% : 1 个</span>
|
|
|
- <div class="barchart_barbox">
|
|
|
- <div class="barchart_bar" style="width: 100.0%; background-color: #04AA6D;"></div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="barchar_item">
|
|
|
- <span>用例失败 0% : 0 个</span>
|
|
|
- <div class="barchart_barbox">
|
|
|
- <div class="barchart_bar" style="width: 0.0%; background-color: #bb4069;"></div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="barchar_item">
|
|
|
- <span>用例异常 0% : 0 个</span>
|
|
|
- <div class="barchart_barbox">
|
|
|
- <div class="barchart_bar" style="width: 0.0%; background-color: #9c27b0;"></div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="barchar_item">
|
|
|
- <span>用例阻塞 0% : 0 个</span>
|
|
|
- <div class="barchart_barbox">
|
|
|
- <div class="barchart_bar" style="width: 0.0%; background-color: #dcbdbd;"></div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div style="margin-top:2em">
|
|
|
- <h3 style="display:inline">执行日志</h3>
|
|
|
- </div>
|
|
|
- <div class="exec_log">
|
|
|
- <div class="suite_dir" id="suite_dir cases/登录功能/">
|
|
|
- <div>
|
|
|
- <span class="label">进入目录</span>
|
|
|
- <span>cases/登录功能/</span>
|
|
|
- </div>
|
|
|
- <div class="suite_setup setup" id="suite_setup setup cases/登录功能/">
|
|
|
- <div class="folder_header">
|
|
|
- <span class="label">套件初始化</span>
|
|
|
- <span>cases/登录功能/</span>
|
|
|
- <span class="executetime">2023-07-06 16:05:20</span>
|
|
|
- </div>
|
|
|
- <div class="folder_body">
|
|
|
- <div class="info">用户登录</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="suite_file" id="suite_file cases/登录功能/login.py">
|
|
|
- <div>
|
|
|
- <span class="label">进入文件</span>
|
|
|
- <span>cases/登录功能/login.py</span>
|
|
|
- </div>
|
|
|
- <div class="case pass" id="case_00000001">
|
|
|
- <div class="folder_header">
|
|
|
- <span class="label caselabel">用例 PASS</span>
|
|
|
- <span class="casename">登录接口验证</span>
|
|
|
- <span class="executetime">2023-07-06 16:05:20</span>
|
|
|
- </div>
|
|
|
- <div class="folder_body">
|
|
|
- <span class="case_class_path">cases/登录功能/login.py::c1</span>
|
|
|
- <div class="test_steps" id="test_steps 登录接口验证">
|
|
|
- <span class="label">测试步骤</span>
|
|
|
- <div class="info">测试步骤</div>
|
|
|
- <div class="case_step">
|
|
|
- <span class="tag">步骤 #1</span>
|
|
|
- <span>第一步调用函数</span>
|
|
|
- </div>
|
|
|
- <div class="case_step">
|
|
|
- <span class="tag">步骤 #2</span>
|
|
|
- <span>第二步设置检查点</span>
|
|
|
- </div>
|
|
|
- <div class="checkpoint_pass">
|
|
|
- <span class="tag">检查点 PASS</span>
|
|
|
- <span>检查登录接口是否正常</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="case_teardown teardown case_st_lable fail" id="case_teardown teardown 登录接口验证">
|
|
|
- <span class="label">用例清除</span>
|
|
|
- <div class="info">用户退出</div>
|
|
|
- <div class="info error-info">case teardown fail | mgr_logout() missing 1 required positional argument: 'session'
|
|
|
-Traceback:
|
|
|
- File "cases/登录功能/login.py", line 20, in teardown
|
|
|
- apimgr.mgr_logout()
|
|
|
-TypeError: mgr_logout() missing 1 required positional argument: 'session'
|
|
|
-</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="suite_teardown teardown fail" id="suite_teardown teardown cases/登录功能/">
|
|
|
- <div class="folder_header">
|
|
|
- <span class="label">套件清除</span>
|
|
|
- <span>cases/登录功能/</span>
|
|
|
- <span class="executetime">2023-07-06 16:05:20</span>
|
|
|
- </div>
|
|
|
- <div class="folder_body">
|
|
|
- <div class="info">用户退出</div>
|
|
|
- <div class="info error-info">suite teardown fail | mgr_logout() missing 1 required positional argument: 'session'
|
|
|
-Traceback:
|
|
|
- File "cases/登录功能/__st__.py", line 8, in suite_teardown
|
|
|
- apimgr.mgr_logout()
|
|
|
-TypeError: mgr_logout() missing 1 required positional argument: 'session'
|
|
|
-</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div id="float_menu">
|
|
|
- <div class="menu-item" onclick="document.querySelector("body").scrollIntoView()">页首</div>
|
|
|
- <div class="menu-item" onclick="window.open("http://www.byhy.net/tut/auto/hytest/01", "_blank"); ">帮助</div>
|
|
|
- <div class="menu-item" id="display_mode" onclick="toggle_folder_all_cases()">Summary</div>
|
|
|
- <div class="error_jumper" display="block">
|
|
|
- <div class="menu-item" onclick="previous_error()" title="上一个错误">∧</div>
|
|
|
- <div class="menu-item" onclick="next_error()" title="下一个错误">∨</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </body>
|
|
|
-</html>
|