httprunner2.3自动化测试报告脚本

<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'/>
    <meta name='description' content=''/>
    <meta name='robots' content='noodp, noydir'/>
    <meta name='viewport' content='width=device-width, initial-scale=1'/>
    <meta id="timeStampFormat" name="timeStampFormat" content='MMM d, yyyy hh:mm:ss a'/>
 
    <link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,600' rel='stylesheet' type='text/css'>
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
 
    <link href='http://extentreports.com/resx/dist/css/extent.css' type='text/css' rel='stylesheet'/>
 
    <title>{{ html_report_name }} - TestReport</title>
 
    <style type='text/css'>
        .node.level-1 ul {
            display: none;
        }
 
        .node.level-1.active ul {
            display: block;
        }
 
        .card-panel.environment th:first-child {
            width: 30%;
        }
        .separator {
            color:royalblue;
        }
        #test-collection li, #category-collection li, #exception-collection li{
            padding: 15px 20px;
        }
        .code-block {
            border: 1px solid #ebedef;
            border-radius: 2px;
            color: #222 !important;
            font-family: Consolas, monospace;
            font-size: 13px;
            margin: 0;
            padding: 5px;
            overflow: auto;
        }
        #checkvalue td:first-child,tr:first-child {
            width: 150px
        }
        #checkvalue td:nth-child(5),tr:nth-child(5) {
            width: 60px
        }
        #checkvalue td:nth-child(2),tr:nth-child(2) {
            width: 60px
        }
        #checkvalue td:nth-child(3),tr:nth-child(3) {
            min-width: 100px;
        }
        #checkvalue td:nth-child(4),tr:nth-child(4) {
            min-width: 100px;
        }
        .noncar-seventy-five {
            display: inline-block;
            width: 100%;
            float: left;
            height: 200px;
        }
        .noncar-wrap {
            width: 50%;
            display: inline-block;
            float: left;
        }
        .noncar-inside, .noncar-inside-last {
            border-radius: 4px;
            height: 200px;
        }
        .noncar-title {
            height: 40px;
        }
        .noncar-content {
            margin-bottom: 40px;
        }
        .noncar-content-l, .noncar-content-r {
            display: inline-block;
            height: 140px;
            float: left;
        }
        .noncar-content-r {
            width: 60%;
        }
        .noncar-content-l {
            width: 35%;
            padding-top: 30px;
        }
        .panel-name {
            font-size: 16px;
            padding-left: 16px;
        }
        .tooltipped {
            padding-left: 25px;
        }
 
    </style>
 
</head>
 
<body class='extent standard default hide-overflow dark'>
<div id='theme-selector' alt='切换主题,默认黑色' title='切换主题'>
    <span><i class='material-icons'>desktop_windows</i></span>
</div>
 
<nav>
    <div class="nav-wrapper">
        <a href="#!" class="brand-logo blue darken-3">双中台自动化测试报告</a>
 
        <!-- slideout menu -->
        <ul id='slide-out' class='side-nav fixed hide-on-med-and-down'>
            <li class='waves-effect active'><a href='#!' view='test-view'
                                               onclick="configureView(0);chartsView('test');"><i class='material-icons'>dashboard</i></a>
            </li>
            <li class='waves-effect'><a href='#!' view='category-view' onclick="configureView(1)"><i
                    class='material-icons'>label_outline</i></a></li>
        </ul>
 
        <!-- report name -->
        <span class='report-name'> {{ html_report_name }}</span>
 
        <!-- report headline -->
        <span class='report-headline'></span>
 
        <!-- nav-right -->
        <ul id='nav-mobile' class='right hide-on-med-and-down nav-right'>
            <li>
                <a href='#!'>
                    <span class='label suite-start-time blue darken-3'>开始时间:  {{ time.start_at }}</span>
                </a>
            </li>
            <li>
                <a href='#!'>
                    <span class='label blue darken-3'>执行时间: {{ '%0.3f'| format(time.duration|float) }} seconds</span>
                </a>
            </li>
            <li>
                <a href='#!'>
                    <span class='label blue darken-3'>HttpRunner  {{ platform.httprunner_version }} </span>
                </a>
            </li>
            <li>
                <a href='#!'>
                    <span class='label blue darken-3'>{{ platform.python_version }} </span>
                </a>
            </li>
            <li>
                <a href='#!'>
                    <span class='label blue darken-3'>{{ platform.platform }}</span>
                </a>
            </li>
        </ul>
    </div>
</nav>
 
<!-- container -->
<div class='container'>
 
    <div id='test-view' class='view'>
 
        <section id='controls'>
            <div class='controls grey lighten-4'>
                <!-- test toggle -->
                <div class='chip transparent'>
                    <a class='dropdown-button tests-toggle' data-activates='tests-toggle' data-constrainwidth='true'
                       data-beloworigin='true' data-hover='true' href='#'>
                        <i class='material-icons'>warning</i> 状态
                    </a>
                    <ul id='tests-toggle' class='dropdown-content'>
                        <li status='pass'><a href='#!' onclick="filters_testcases(this.type)" type="pass" >成功<i class='material-icons green-text'>check_circle</i></a></li>
                        <li status='fail'><a href='#!'onclick="filters_testcases(this.type)" type="fail" >失败<i class='material-icons red-text'>cancel</i></a></li>
                        <!-- <li status="skip"><a href="#!">Skip<i class="material-icons cyan-text">redo</i></a></li> -->
                        <li class='divider'></li>
                        <li status='clear' clear='true'><a href='#!' onclick="filters_testcases(this.type)" type="clear" >清空 <i
                                class='material-icons'>clear</i></a></li>
                    </ul>
                </div>
                <!-- test toggle -->
 
                <!-- clear filters -->
                <div class='chip transparent hide'>
                    <a class='' id='clear-filters' alt='Clear Filters' title='Clear Filters'>
                        <i class='material-icons'>close</i> Clear
                    </a>
                </div>
                <!-- clear filters -->
 
                <!-- enable dashboard -->
                <div id='toggle-test-view-charts' class='chip transparent'>
                    <a class='pink-text' id='enable-dashboard' alt='Enable Dashboard' title='Enable Dashboard'>
                        <i class='material-icons'>track_changes</i> 看板切换
                    </a>
                </div>
                <!-- enable dashboard -->
 
                <!-- search -->
                <div class='chip transparent' alt='Search Tests' title='Search Tests'>
                    <a href="#" class='search-div'>
                        <i class='material-icons'>search</i> 查找
                    </a>
 
                    <div class='input-field left hide'>
                        <input style="color: red" id='search-tests' type='text' class='validate browser-default'
                               placeholder='Search Tests...'>
                    </div>
 
                </div>
                <!-- search -->
            </div>
        </section>
        <div id='test-view-charts' class='subview-full noncar-seventy-five'>
            <div id='charts-row' class='noncar-wrap'>
                <div class=' noncar-inside'>
                    <div class='noncar-title'>
                        <div class='left panel-name'>驾驶舱接口自动化测试报告</div>
                    </div>
                    <div class="noncar-content">
                        <div class="noncar-content-l" >
                            <div class='block text'>
                                <span class='strong tooltipped' data-position='top'>总测试:  {{ stat.testcases.total }}</span>
                            </div>
                            <div class='block text'>
                                <span class='strong tooltipped' data-position='top'>成功:  {{ stat.testcases.success }}</span>
                            </div>
                            <div class='block text'>
                                <span class='strong tooltipped' data-position='top'>失败:  {{ stat.testcases.fail }}</span>
                            </div>
                        </div>
                        <div class="noncar-content-r" style="-webkit-tap-highlight-color: transparent; user-select: none; position: relative; background: transparent;">
                            <div class='chart-box'  width="369" height="140" data-zr-dom-id="zr_0" style="position: absolute; left: 0px; top: 0px; width: 369px; height: 140px; user-select: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); padding: 0px; margin: 0px; border-width: 0px;">
                                <canvas id="child-analysis" width="369" height="140" style="position: absolute; left: 0px; top: 0px; width: 369px; height: 140px; user-select: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); padding: 0px; margin: 0px; border-width: 0px;">
                                </canvas>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div id='charts-row' class='noncar-wrap'>
                <div class=' noncar-inside'>
                    <div class='noncar-title'>
                        <div class='left panel-name'>测试详情</div>
                    </div>
                    <div class="noncar-content">
                        <div class="noncar-content-l" >
                            <div class='block text'>
                                <span class='strong tooltipped' data-position='top'>总数:  {{ stat.teststeps.total }}</span>
                            </div>
                            <div class='block text'>
                                <span class='strong tooltipped' data-position='top'>成功:  {{ stat.teststeps.successes }}</span>
                            </div>
                            <div class='block text'>
                                <span class='strong tooltipped' data-position='top'>失败:  {{ stat.teststeps.failures }}</span>
                            </div>
                            <div class='block text'>
                                <span class='strong tooltipped' data-position='top'>错误:  {{ stat.teststeps.errors }}</span>
                            </div>
                            <div class='block text'>
                                <span class='strong tooltipped' data-position='top'>跳过:  {{ stat.teststeps.skipped }}</span>
                            </div>
                        </div>
                        <div class="noncar-content-r" style="-webkit-tap-highlight-color: transparent; user-select: none; position: relative; background: transparent;">
                            <div class='chart-box'  width="369" height="140" style="position: absolute; left: 0px; top: 0px; width: 369px; height: 140px; user-select: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); padding: 0px; margin: 0px; border-width: 0px;">
                                <canvas id='parent-analysis' width='369' height='140' style="position: absolute; left: 0px; top: 0px; width: 369px; height: 140px; user-select: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); padding: 0px; margin: 0px; border-width: 0px;"></canvas>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
 
        <div class='subview-left left'>
 
            <div class='view-summary'>
                <h5>测试详情</h5>
                <ul id='test-collection' class='test-collection'>
 
                    {% for test_suite_summary in details %}
                        {% if test_suite_summary.success == True %}
                            <li class='test displayed active has-leaf pass' status='pass' bdd='true' test-id='{{ test_suite_summary.name }}_{{ loop.index }}'>
                        {% else %}
                            <li class='test displayed active has-leaf fail' status='fail' bdd='false' test-id='{{ test_suite_summary.name }}_{{ loop.index }}'>
                        {% endif %}
                        <div class='test-heading'>
                            <span class='test-name'>{{ test_suite_summary.name }}</span>
                            {% if test_suite_summary.success == True %}
                                <span class='test-status right pass'>成功</span>
                            {% else %}
                                <span class='test-status right fail'>失败</span>
                            {% endif %}
 
                        </div>
                        <div class='test-content hide'>
                            <div class='test-time-info'>
                                <span class='label start-time'>{{ test_suite_summary.time.start_at }}</span>
                                <span class='label end-time'>{{ '%0.3f'| format(test_suite_summary.time.duration|float) }} seconds</span>
                            </div>
                            <div class='test-desc'>成功: {{ test_suite_summary.stat.successes }} ;
                                失败: {{ test_suite_summary.stat.failures }} ;
                                错误: {{ test_suite_summary.stat.errors }}
                                跳过: {{ test_suite_summary.stat.skipped }} ;
                            </div>
                            <ul class='collapsible node-list' data-collapsible='accordion'>
                                {% for record in test_suite_summary.records %}
                                {% set record_index = "{}_{}".format(suite_index, loop.index) %}
                                {% set record_meta_datas = record.meta_datas_expanded %}
                                    {% if  record.status == 'success' %}
                                        <li class='node level-1 leaf pass' status='pass'
                                            test-id='{{ test_suite_summary.name }}_{{ record.name }}_{{ loop.index }}'>
                                            {% elif record.status == 'failure' %}
                                        <li class='node level-1 leaf fail' status='fail'
                                            test-id='{{ test_suite_summary.name }}_{{ record.name }}_{{ loop.index }}'>
                                            {% elif record.status == 'error' %}
                                        <li class='node level-1 leaf error' status='error'
                                            test-id='{{ test_suite_summary.name }}_{{ record.name }}_{{ loop.index }}'>
                                            {% elif record.status == 'skipped' %}
                                        <li class='node level-1 leaf skip' status='skip'
                                            test-id='{{ test_suite_summary.name }}_{{ record.name }}_{{ loop.index }}'>
                                    {% endif %}
                                <div class='collapsible-header'>
                                    <div class='node-name'>{{ record.name }}</div>
                                    <span class='node-duration'>响应时间: {{ record.response_time }} ms</span>
                                    {% if  record.status == 'success' %}
                                        <span class='test-status right pass'>通过</span>
                                    {% elif record.status == 'failure' %}
                                        <span class='test-status right fail'>失败</span>
                                    {% elif record.status == 'error' %}
                                        <span class='test-status right error'>错误</span>
                                    {% elif record.status == 'skipped' %}
                                        <span class='test-status right skip'>跳过</span>
                                    {% endif %}
 
                                </div>
                                <div class='collapsible-body'>
                                    {% for meta_data in record_meta_datas %}
                                    {% set meta_data_index = loop%}
                                    <div class='node-steps'>
                                        {% for req_resp in meta_data.data %}
                                            <table class='bordered table-results'>
                                                <thead>
                                                <tr>
                                                    <th>Status</th>
                                                    <th>Params</th>
                                                    <th>Details</th>
                                                </tr>
                                                </thead>
                                                {% if record.status == 'skipped' %}
                                                <tbody>
                                                    {% if record.attachment %}
                                                    <tr class='fail' status='fail'>
                                                        <td class='status fail' title='exception' alt='fail'><i
                                                                class='material-icons'>cancel</i></td>
                                                        <td class='timestamp'>traceback</td>
                                                        <td class='step-details'>
                                                            <pre class="code-block">{{ record.attachment | e }}</pre>
                                                        </td>
                                                    </tr>
                                                    {% endif %}
                                                </tbody>
                                                {% else %}
                                                    {% if loop.index > 1 %}
                                                    <div class="separator" align="center">==================================== redirect to ====================================</div>
                                                    {% endif %}
                                                    <tbody>
                                                    <tr class='info' status='info'>
                                                        <td class='status info' title='接口地址' alt='info'><i
                                                                class='material-icons'>low_priority</i></td>
                                                        <td class='timestamp'>url</td>
                                                        <td class='step-details'>{{ req_resp.request.url }}</td>
                                                    </tr>
                                                    {% if req_resp.request.method %}
                                                    <tr class='info' status='info'>
                                                        <td class='status info' title='请求方式' alt='info'><i
                                                                class='material-icons'>low_priority</i></td>
                                                        <td class='timestamp'>method</td>
                                                        <td class='step-details'>{{ req_resp.request.method }}</td>
                                                    </tr>
                                                    {% endif %}
                                                    <tr class='info' status='info'>
                                                        <td class='status info' title='状态码' alt='info'><i
                                                                class='material-icons'>low_priority</i></td>
                                                        <td class='timestamp'>status_code</td>
                                                        <td class='step-details'>{{ req_resp.response.status_code }}</td>
                                                    </tr>
                                                    {% for key, value in req_resp.request.items() %}
                                                        {% if key != 'url' and key != 'method' and key != 'start_timestamp' %}
                                                            <tr class='warning' status='warning'>
                                                                <td class='status warning' title='{{ key }}' alt='warning'><i
                                                                        class='material-icons'>low_priority</i></td>
                                                                {% if key == "headers" %}
                                                                    <td class='timestamp'>req_header</td>
                                                                {% else %}
                                                                    <td class='timestamp'>{{ key }}</td>
                                                                {% endif %}
                                                                <td class='step-details'>
                                                                    {% if key == "headers" %}
                                                                        {% for header_key, header_value in req_resp.response.headers.items() %}
                                                                            <div>{{ header_key }}: {{ header_value | e}}</div>
                                                                        {% endfor %}
                                                                    {% else %}
                                                                        {{ value }}
                                                                    {% endif %}
                                                                </td>
                                                            </tr>
                                                        {% endif %}
                                                    {% endfor %}
                                                    {% if meta_data_index.length > 1 %}
                                                    <div class="separator" align="center">==================================== request_{{meta_data_index.index}} ====================================</div>
                                                    {% endif%}
                                                    {% for key, value in req_resp.response.items() %}
                                                        {% if key != "elapsed_ms" and key != "response_time_ms" and key != "content_size" and key != "content_type" and key != "status_code" and key != "reason" and key != "ok" and key != "encoding" and key != "url" and value %}
                                                            <tr class='error' status='error'>
                                                                <td class='status error' title='{{ key }}' alt='error'><i
                                                                        class='material-icons'>low_priority</i></td>
                                                                {% if key == "headers" %}
                                                                    <td class='timestamp'>rsp_header</td>
                                                                {% else %}
                                                                    <td class='timestamp'>{{ key }}</td>
                                                                {% endif %}
                                                                <td class='step-details'>
                                                                    {% if key == "headers" %}
                                                                        {% for header_key, header_value in req_resp.response.headers.items() %}
                                                                            <pre class="code-block">{{ header_key }}: {{ header_value }}</pre>
                                                                        {% endfor %}
                                                                    {% elif key == "content" %}
                                                                        {% if "image" in req_resp.response.content_type %}
                                                                            <img src="{{ req_resp.response.content }}" />
                                                                        {% else %}
                                                                            {{ value }}
                                                                        {% endif %}
                                                                    {% elif key in ["text", "json"] %}
                                                                        {% if value is mapping%}
                                                                            <pre>{{ value | tojson | e }}</pre>
                                                                        {% else %}
                                                                            <pre>{{ value | e }}</pre>
                                                                        {% endif %}
                                                                    {% elif key == "cookies" %}
                                                                        {% for cookies_key, cookies_value in req_resp.response.cookies.items() %}
                                                                            <pre>{{ cookies_key }}: {{ cookies_value }}</pre>
                                                                        {% endfor %}
                                                                    {% else %}
                                                                        {{ value }}
                                                                    {% endif %}
                                                                </td>
                                                            </tr>
                                                        {% endif %}
                                                    {% endfor %}
 
                                                    <tr class='pass' status='pass'>
                                                        <td class='status pass' title='断言' alt='pass'><i
                                                                class='material-icons'>low_priority</i></td>
                                                        <td class='timestamp'>Validators</td>
                                                        <td >
                                                                <table id="checkvalue" >
                                                                <tr>
                                                                    <th >check</th>
                                                                    <th>comparator</th>
                                                                    <th>expect value</th>
                                                                    <th>actual value</th>
                                                                    <th>result</th>
                                                                </tr>
                                                                {% for validator in meta_data.validators %}
                                                                <tr>
                                                                    <td >{{validator.check | e}}</td>
                                                                    <td>{{validator.comparator}}</td>
                                                                    <td>{{validator.expect | e}}</td>
                                                                    <td>{{validator.check_value | e}}</td>
                                                                    {% if validator.check_result == "pass" %}
                                                                    <td class="test-status pass">通过</td>
                                                                    {% elif validator.check_result == "fail" %}
                                                                    <td class="test-status fail">失败</td>
                                                                    {% elif validator.check_result == "unchecked" %}
                                                                    <td class="test-status skip">unchecked</td>
                                                                    {% endif %}
                                                                </tr>
                                                                {% endfor %}
                                                            </table>
                                                        </td>
                                                    </tr>
 
                                                    <tr class='info' status='info'>
                                                        <td class='status info' title='info' alt='info'><i
                                                                class='material-icons'>low_priority</i></td>
                                                        <td class='timestamp'>Statistics</td>
                                                        <td class='step-details'>
                                                            <div>
                                                                content_size(bytes): {{ meta_data.stat.content_size }}
                                                            </div>
                                                            <div>
                                                                response_time(ms): {{ meta_data.stat.response_time_ms }}
                                                            </div>
                                                            <div>
                                                                elapsed(ms): {{ meta_data.stat.elapsed_ms }}
                                                            </div>
                                                        </td>
                                                    </tr>
 
                                                    {% if record.attachment and meta_data_index.last %}
 
                                                        <tr class='fail' status='fail'>
                                                            <td class='status fail' title='exception' alt='fail'><i
                                                                    class='material-icons'>cancel</i></td>
                                                            <td class='timestamp'>traceback</td>
                                                            <td class='step-details'>
                                                                <pre class="code-block">{{ record.attachment | e }}</pre>
                                                            </td>
                                                        </tr>
                                                    {% endif %}
                                                    </tbody>
                                                {% endif %}
                                                </table>
                                        {% endfor %}
                                    </div>
                                    {% endfor %}
                                </div>
                                </li>
                                {% endfor %}
                            </ul>
                        </div>
                    {% endfor %}
                </ul>
            </div>
        </div>
        <!-- subview left -->
 
        <div class='subview-right left'>
            <div class='view-summary'>
                <h6 class='test-name'></h6>
 
                <div id='step-filters' class="right">
                    <span status="pass" alt="pass" title="pass"><a href='#!' onclick="step_filter(this.type)" type="pass"><i class="material-icons green-text">check_circle</i></a></span>
                    <span status="fail" alt="fail" title="fail"><a href='#!' onclick="step_filter(this.type)" type="fail"><i
                            class="material-icons red-text">cancel</i></a></span>
                    <span class="text-lighten-1" status="error" alt="error" title="error"><a href='#!' onclick="step_filter(this.type)" type="error"><i
                            class="material-icons pink-text ">error</i></a></span>
                    <span status="skip" alt="skip" title="skip"><a href='#!' onclick="step_filter(this.type)" type="skip"><i
                            class="material-icons teal-text">redo</i></a></span>
                    <span status="clear" alt="Clear filters" title="Clear filters"><a href='#!' onclick="step_filter(this.type)" type="clear"><i
                            class="material-icons">clear</i></a></span>
                </div>
            </div>
        </div>
    </div>
    <!-- subview right -->
    <!-- test view -->
    <div id='category-view' class='view hide'>
 
        <section id='controls'>
            <div class='controls grey lighten-4'>
                <!-- search -->
                <div class='chip transparent' alt='Search Tests' title='Search Tests'>
                    <a href="#" class='search-div'>
                        <i class='material-icons'>search</i> Search
                    </a>
 
                    <div class='input-field left hide'>
                        <input style="color: red;" id='search-tests' type='text' class='validate browser-default' placeholder='Search Tests...'>
                    </div>
 
                </div>
                <!-- search -->
            </div>
        </section>
 
        <div class='subview-left left'>
 
            <div class='view-summary'>
                <h5>Categories</h5>
                <ul id='category-collection' class='category-collection'>
 
                    <li class='category displayed active'>
                        <div class='category-heading'>
                            <span class='category-name'>All TESTCASES</span>
                            <span class='category-status right'>
                                <span class='label pass'>{{ stat.testcases.success }} </span>
                                {% if stat.testcases.fail != 0 %}
                                    <span class='label fail'>{{ stat.testcases.fail }}</span>
                                {% endif %}
                                </span>
                        </div>
                        <div class='category-content hide'>
                            <div class='category-status-counts'>
                                <span class='label green accent-4 white-text'>Passed: {{ stat.teststeps.successes }}</span>
                                <span class='label red lighten-1 white-text'>Failed: {{ stat.teststeps.failures }}</span>
                                <span class='label blue lighten-1 white-text'>Errored: {{ stat.teststeps.errors }}</span>
                                <span class="label yellow darken-2 white-text">Skipped: {{ stat.teststeps.skipped }}</span>
                            </div>
 
                            <div class='category-tests'>
                                <table class='bordered table-results'>
                                    <thead>
                                    <tr>
                                        <th>Timestamp</th>
                                        <th>TestName</th>
                                        <th>Status</th>
                                    </tr>
                                    </thead>
                                    <tbody>
                                    {% for test_suite_summary in details %}
                                        <tr style="border: 1px solid #49cc90; background-color: rgba(73, 204, 144, .1)">
                                            <td>{{ '%0.3f'| format(test_suite_summary.time.duration|float) }} s</td>
                                            <td class='linked'
                                                test-id='{{ test_suite_summary.name }}_{{ loop.index }}'>{{ test_suite_summary.name }}</td>
                                            {% if test_suite_summary.success == True %}
                                                <td><span class='test-status pass'>成功</span></td>
                                            {% else %}
                                                <td><span class='test-status fail'>失败</span></td>
                                            {% endif %}
 
                                        </tr>
                                        {% for record in test_suite_summary.records %}
                                            <tr>
                                                <td>{{ record.response_time }} ms</td>
                                                <td class='linked'
                                                    test-id='{{ test_suite_summary.name }}_{{ loop.index }}'>{{ record.name }}</td>
                                                {% if record.status == 'success' %}
                                                    <td><span class='test-status pass'>成功</span></td>
                                                {% elif record.status == 'failure' %}
                                                    <td><span class='test-status fail'>失败</span></td>
                                                {% elif record.status == 'error' %}
                                                    <td><span class='test-status error'>错误</span></td>
                                                {% elif record.status == 'skipped' %}
                                                    <td><span class='test-status' style="color: #fbc02d">跳过</span>
                                                    </td>
                                                {% endif %}
                                            </tr>
                                        {% endfor %}
                                    {% endfor %}
                                    </tbody>
                                </table>
                            </div>
                        </div>
                    </li>
 
                    {% for test_suite_summary in details %}
                        <li class='category displayed active'>
                            <div class='category-heading'>
                                <span class='category-name'>{{ test_suite_summary.name }}</span>
                                <span class='category-status right'>
                                <span class='label pass'>{{ test_suite_summary.stat.successes }} </span>
                                    {% if test_suite_summary.stat.failures != 0 %}
                                        <span class='label fail'>{{ test_suite_summary.stat.failures }}</span>
                                    {% endif %}
                                    {% if test_suite_summary.stat.errors != 0 %}
                                        <span class='label blue lighten-1'>{{ test_suite_summary.stat.errors }}</span>
                                    {% endif %}
                                    {% if test_suite_summary.stat.skipped != 0 %}
                                        <span class='label yellow darken-2'>{{ test_suite_summary.stat.skipped }}</span>
                                    {% endif %}
                                </span>
                            </div>
                            <div class='category-content hide'>
                                <div class='category-status-counts'>
                                    <span class='label green accent-4 white-text'>Passed: {{ test_suite_summary.stat.successes }}</span>
                                    <span class='label red lighten-1 white-text'>Failed: {{ test_suite_summary.stat.failures }}</span>
                                    <span class='label blue lighten-1 white-text'>Errored: {{ test_suite_summary.stat.errors }}</span>
                                    <span class="label yellow darken-2 white-text">Skipped: {{ test_suite_summary.stat.skipped }}</span>
                                </div>
 
                                <div class='category-tests'>
                                    <table class='bordered table-results'>
                                        <thead>
                                        <tr>
                                            <th>Timestamp</th>
                                            <th>TestName</th>
                                            <th>Status</th>
                                        </tr>
                                        </thead>
                                        <tbody>
                                        {% for record in test_suite_summary.records %}
                                            <tr>
                                                <td>{{ record.response_time }}</td>
                                                <td class='linked'
                                                    test-id='{{ test_suite_summary.name }}_{{ loop.index }}'>{{ record.name }}</td>
                                                {% if record.status == 'success' %}
                                                    <td><span class='test-status pass'>成功</span></td>
                                                {% elif record.status == 'failure' %}
                                                    <td><span class='test-status fail'>失败</span></td>
                                                {% elif record.status == 'error' %}
                                                    <td><span class='test-status error'>错误</span></td>
                                                {% elif record.status == 'skipped' %}
                                                    <td><span class='test-status' style="color: #fbc02d">跳过</span>
                                                    </td>
                                                {% endif %}
                                            </tr>
                                        {% endfor %}
                                        </tbody>
                                    </table>
                                </div>
                            </div>
                        </li>
                    {% endfor %}
                </ul>
            </div>
        </div>
 
        <div class='subview-right left'>
            <div class='view-summary'>
                <h5 class='category-name'></h5>
            </div>
        </div>
    </div>
    <!-- category view -->
 
 
    <!-- testrunner-logs view -->
    <!-- container -->
</div>
<script>
    var test_suite_success = 0;
    {%for test_suite_summary in details %}
        {% if test_suite_summary.success == True %}
            test_suite_success = test_suite_success + 1;
        {% endif %}
 
    {% endfor %}
 
    var statusGroup = {
        passParent: {{ stat.teststeps.successes }},
        failParent: {{ stat.teststeps.failures }},
        fatalParent: 0,
        errorParent: {{ stat.teststeps.errors }},
        warningParent: 0,
        skipParent: {{ stat.teststeps.skipped }},
        exceptionsParent: 0,
 
        passChild: test_suite_success,
        failChild: {{ details|length }} -test_suite_success,
        fatalChild: 0,
        errorChild: 0,
        warningChild: 0,
        skipChild: 0,
        infoChild: 0,
        exceptionsChild: 0,
 
        passGrandChild: 0,
        failGrandChild: 0,
        fatalGrandChild: 0,
        errorGrandChild: 0,
        warningGrandChild: 0,
        skipGrandChild: 0,
        infoGrandChild: 0,
        exceptionsGrandChild: 0,
    };
 
</script>
 
<script src='http://extentreports.com/resx/dist/js/extent.js' type='text/javascript'></script>
 
 
<script type='text/javascript'>
    $(window).off("keydown");
</script>
 
<script type="text/javascript">
    function filters_testcases(mytype){
        testcases = document.getElementById('test-collection').getElementsByClassName('displayed')
        if (mytype == 'pass'){
            for (var i=0,len=testcases.length;i < len; i++){
                if (testcases[i].getAttribute('bdd') == 'false'){
                    testcases[i].style.display="none"
                }else{
                    testcases[i].style.display="block"
                }
            }
        }else if(mytype == 'fail'){
            for (var i=0,len=testcases.length;i < len; i++){
                if (testcases[i].getAttribute('bdd') == 'true'){
                    testcases[i].style.display="none"
                }else{
                    testcases[i].style.display="block"
                }
            }
        }else if(mytype == 'clear'){
            for (var i=0,len=testcases.length;i < len; i++){
                testcases[i].style.display="block"
            }
        }
    };
</script>>
<script type="text/javascript">
    function step_filter(mytype){
        testcontents = document.getElementsByClassName('test-content')
        teststeps = testcontents[testcontents.length - 1].getElementsByTagName('li');
        stepfilters = document.getElementById('step-filters').getElementsByTagName('span');
        for (var i=0, len=stepfilters.length;i<len;i++){
            if (stepfilters[i].getAttribute('status') != mytype){
                stepfilters[i].classList.remove('border-bottom-highlight')
            }
        }
        for (var i=0,len=teststeps.length;i < len; i++){
            if (mytype != 'clear'){
                if (teststeps[i].getAttribute('status') == mytype){
                    teststeps[i].style.display="block"
                }else{
                    teststeps[i].style.display="none"
                }
            }else{
                teststeps[i].style.display="block"
            }
        }
    }
</script>>
</body>
 
</html>

 

posted @ 2021-06-18 17:58  Camillezxl  阅读(41)  评论(0编辑  收藏  举报