分类目录:《系统学习Python》总目录
相关文章:
· 单元测试unittest:框架结构
· 单元测试unittest:测试固件
· 单元测试unittest:编写测试用例
· 单元测试unittest:执行测试用例
· 单元测试unittest:用例执行次序
· 单元测试unittest:内置装饰器
· 单元测试unittest:命令行执行测试
· 单元测试unittest:批量执行测试文件
· 单元测试unittest:测试断言
· 单元测试unittest:测试报告
前面的文章,我们所有的测试结果都是直接输出到PyCharm控制台的。这不利于我们查看和保存测试结果。本文我们将说明如何借助HTMLTestRunner生成HTML测试报告。
准备工作如下。
- 下载HTMLTestRunner.py文件,官网为Python 2的,如需Python 3的可以移步至本文末尾。
- 将HTMLTestRunner.py文件复制到Python安装目录下的Lib文件夹中。
- 在Python交互模式下导入模块,测试是否成功。
没有报错,说明导入成功。接下来,我们在文件夹下面新建一个Python Package,并取名为“Storm_10_2”。然后在下面新建3个文件,文件名及内容如下:
文件test1.py:
import unittest
class MyTestCase(unittest.TestCase):
def test_a(self):
print('test_a')
self.assertEqual('a', 'a')
def test_b(self):
print('test_b')
self.assertEqual('b', 'b')
if __name__ == '__main__':
unittest.main()
文件test2.py:
import unittest
class MyTestCase(unittest.TestCase):
def test_c(self):
print('test_c')
self.assertEqual('c', 'c')
def test_d(self):
print('test_d')
self.assertEqual('d', 'd')
if __name__ == '__main__':
unittest.main()
文件run.py:
import unittest
import HTMLTestRunner
if __name__ == '__main__':
testsuite = unittest.TestLoader().discover('.')
unittest.TextTestRunner(verbosity=2).run(testsuite)
file_name = r'D:HTMLTestRunner_output.html'
with open(file_name, 'wb') as f:
runner = HTMLTestRunner.HTMLTestRunner(stream=f, title='报告标题', description='报告描述')
runner.run(testsuite)
我们重点看一下run.py文件,有以下几点需要注意:
- 通过unittest.TestLoader().discover('.')构造测试集合。
- 通过with open的方式打开、写入文件,不需要手动关闭文件。
- 通过调用HTMLTestRunner.HTMLTestRunner来生成测试报告。
当我们执行run.py文件后,程序会在指定的目录(上方代码指定的目录为D盘根目录)下生成一个测试报告文件,我们通过浏览器打开:
前文提到官网HTMLTestRunner.py文件为Python 2的,Python 3版本的可以直接复制如下代码:
"""
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 = ''
# 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
__author__ = "Wai Yip Tung"
__version__ = "0.8.2"
"""
Change History
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
%(heading)s
%(report)s
%(ending)s


