# -*- coding:utf-8 -*-
# @Time : 2024/3/31 15:49
# @Author : DINO.J
# @Email : Dino.j@dragonsborn.net
# -*- coding: utf-8 -*-
"""
A TestRunner for use with the Python unit testing framework. It
generates a HTML report to show the result at a glance.
The simplest way to use this is to invoke its main method. E.g.
import unittest
import HTMLTestRunner
... define your tests ...
if __name__ == '__main__':
HTMLTestRunner.main()
For more customization options, instantiates a HTMLTestRunner object.
HTMLTestRunner is a counterpart to unittest's TextTestRunner. E.g.
# output to a file
fp = file('my_report.html', 'wb')
runner = HTMLTestRunner.HTMLTestRunner(
stream=fp,
title='My unit test',
description='This demonstrates the report output by HTMLTestRunner.'
)
# Use an external stylesheet.
# See the Template_mixin class for more customizable options
runner.STYLESHEET_TMPL = '<link rel="stylesheet" href="my_stylesheet.css" type="text/css">'
# run the test
runner.run(my_test_suite)
------------------------------------------------------------------------
Copyright (c) 2004-2007, Wai Yip Tung
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name Wai Yip Tung nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""
# URL: http://tungwaiyip.info/software/HTMLTestRunner.html
import os
__author__ = "Wai Yip Tung"
__version__ = "0.9.1"
"""
Change History
Version 0.9.1
* 用Echarts添加执行情况统计图 (灰蓝)
Version 0.9.0
* 改成Python 3.x (灰蓝)
Version 0.8.3
* 使用 Bootstrap稍加美化 (灰蓝)
* 改为中文 (灰蓝)
Version 0.8.2
* Show output inline instead of popup window (Viorel Lupu).
Version in 0.8.1
* Validated XHTML (Wolfgang Borgert).
* Added description of test classes and test cases.
Version in 0.8.0
* Define Template_mixin class for customization.
* Workaround a IE 6 bug that it does not treat <script> block as CDATA.
Version in 0.7.1
* Back port to Python 2.3 (Frank Horowitz).
* Fix missing scroll bars in detail log (Podi).
"""
# TODO: color stderr
# TODO: simplify javascript using ,ore than 1 class in the class attribute?
import datetime
import sys
import unittest
from xml.sax import saxutils
PY3K = (sys.version_info[0] > 2)
if PY3K:
import io as StringIO
else:
import StringIO
import copy
# ------------------------------------------------------------------------
# The redirectors below are used to capture output during testing. Output
# sent to sys.stdout and sys.stderr are automatically captured. However
# in some cases sys.stdout is already cached before HTMLTestRunner is
# invoked (e.g. calling logging.basicConfig). In order to capture those
# output, use the redirectors for the cached stream.
#
# e.g.
# >>> logging.basicConfig(stream=HTMLTestRunner.stdout_redirector)
# >>>
class OutputRedirector(object):
""" Wrapper to redirect stdout or stderr """
def __init__(self, fp):
self.fp = fp
def write(self, s):
self.fp.write(s)
def writelines(self, lines):
self.fp.writelines(lines)
def flush(self):
self.fp.flush()
stdout_redirector = OutputRedirector(sys.stdout)
stderr_redirector = OutputRedirector(sys.stderr)
# ----------------------------------------------------------------------
# Template
class Template_mixin(object):
"""
Define a HTML template for report customerization and generation.
Overall structure of an HTML report
HTML
+------------------------+
|<html> |
| <head> |
| |
| STYLESHEET |
| +----------------+ |
| | | |
| +----------------+ |
| |
| </head> |
| |
| <body> |
| |
| HEADING |
| +----------------+ |
| | | |
| +----------------+ |
| |
| REPORT |
| +----------------+ |
| | | |
| +----------------+ |
| |
| ENDING |
| +----------------+ |
| | | |
| +----------------+ |
| |
| </body> |
|</html> |
+------------------------+
"""
STATUS = {
0: u'通过',
1: u'失败',
2: u'错误',
}
DEFAULT_TITLE = 'Unit Test Report'
DEFAULT_DESCRIPTION = ''
# ------------------------------------------------------------------------
# HTML Template
HTML_TMPL = r"""<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>%(title)s</title>
<meta name="generator" content="%(generator)s"/>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script type="text/javascript" src="%(jsonpath)s" charset="gbk"></script>
<link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/echarts/3.8.5/echarts.common.min.js"></script>
<!-- <script type="text/javascript" src="js/echarts.common.min.js"></script> -->
%(stylesheet)s
</head>
<body>
<script language="javascript" type="text/javascript"><!--
output_list = Array();
/* level - 0:Summary; 1:Failed; 2:All */
console.log(data)
function showCase(level) {
trs = document.getElementsByTagName("tr");
for (var i = 2; i < trs.length; i++) {
let tr = trs[i];
var result = tr.getElementsByTagName("td")[0].className
if (result === "passCase"){
if (level === 2 || level === 3){
tr.className = '';
} else {
tr.className = 'hiddenRow';
}
}
if (result === "failCase"){
if (level === 1 || level === 3){
tr.className = '';
}else {
tr.className = 'hiddenRow';
}
}
if (result === "errorCase"){
if (level === 4 || level === 3){
tr.className = '';
}else {
tr.className = 'hiddenRow';
}
}
}
}
function showClassDetail(cid, count) {
var id_list = Array(count);
var toHide = 1;
for (var i = 0; i < count; i++)
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
codeDemo.zip (57个子文件)
codeDemo
screenshots
TestCase
__init__.py 109B
case_shezhi.py 617B
__pycache__
case_xcchongqi.cpython-311-pytest-8.0.2.pyc 4KB
case_shouye.cpython-311-pytest-8.0.2.pyc 6KB
case_xchome.cpython-311-pytest-8.0.2.pyc 5KB
__init__.cpython-311.pyc 141B
case_shezhi.cpython-312.pyc 1KB
case_xchome1.cpython-311-pytest-8.0.2.pyc 6KB
case_home.cpython-311-pytest-8.0.2.pyc 7KB
reports
20240331153859_result.html 70KB
20240331153859_result.json 3KB
.idea
workspace.xml 15KB
misc.xml 284B
inspectionProfiles
Project_Default.xml 410B
profiles_settings.xml 174B
modules.xml 275B
codeDemo.iml 325B
.gitignore 50B
encodings.xml 214B
base
DriverTools.py 3KB
__init__.py 107B
ReadDev.py 458B
HTMLTestRunner.py 95KB
Logger.py 2KB
BasePage.py 6KB
ZipMethod.py 1KB
__pycache__
DriverTools.cpython-312.pyc 3KB
HTMLTestRunner.cpython-311.pyc 101KB
__init__.cpython-311.pyc 137B
BasePage.cpython-312.pyc 8KB
HTMLTestRunner.cpython-312.pyc 99KB
__init__.cpython-312.pyc 125B
Page
设置.py 665B
__init__.py 77B
shezhiPage.py 1KB
获取属性值.py 1KB
__pycache__
__init__.cpython-311.pyc 137B
shezhiPage.cpython-312.pyc 3KB
__init__.cpython-312.pyc 125B
common
__init__.py 107B
myUnit.py 1KB
__pycache__
__init__.cpython-311.pyc 139B
myUnit.cpython-311.pyc 3KB
action.cpython-311.pyc 4KB
__init__.cpython-312.pyc 127B
myUnit.cpython-312.pyc 3KB
logs
2024_03_30.log 10KB
2024_03_31.log 39KB
run_main.py 4KB
config
__init__.py 108B
infoEmail.cfg 155B
readEmail.py 564B
infoDev.yaml 485B
__pycache__
__init__.cpython-311.pyc 139B
readEmail.cpython-311.pyc 1KB
readEmail.cpython-312.pyc 1KB
__init__.cpython-312.pyc 127B
共 57 条
- 1
资源评论
Ray_0923
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功