前面我们已经使用了两种方式运行:
- unittest.main()
- TextTestRunner
unittest.main() 是 unittest 中定义的 main() 方法,会自动查找当前测试文件中的所有测试类中的所有符合规则的测试用例,并自动构建测试套件。最后调用 TextTestRunner 中的 run() 方法运行该套件。方便,但是只针对当前文件。
main() 与中是根据ASCII码的顺序加载,数字与字母的顺序为:0-9,A-Z,a-z。通过 TestLoader 加载的用例也按照此顺序,运行时是按照加载的顺序。也就是说你在写用例时,与你编写用例的顺序没有关系,只和文件名、类名和方法名有关系。
TextTestRunner
TextTestRunner 是 unittest 框架中默认的用例运行器,生成的是文本形式的测试结果。前面我们运行时,均通过此运行器运行的。
TextTestRunner 的测试结果除了在结果中输出而外,还可以写入文件:
with open('test.log', 'w', encoding='utf-8') as f:
runner = unittest.TextTestRunner(stream=f, verbosity=2)
runner.run(tests)
写入文件的过程:
- 打开一个文件对象
- 将文件对象通过
stream
参数传递给 TextTestRunner
verbosity
用来决定记录信息的详尽程度。1,简要信息(默认为1);2,详细信息。
打开 test.log
文件,可以看到如下信息:
test_add_list (sub_test.test_b.TestAddTwo) ... ok
test_add_tuple (sub_test.test_b.TestAddTwo) ... expected failure
test_add_int (test_a.TestAddOne)
测试int相加 ... ok
test_add_str (test_a.TestAddOne)
测试str相加 ... skipped '演示用例跳过'
----------------------------------------------------------------------
Ran 4 tests in 0.001s
OK (skipped=1, expected failures=1)
更详细的标识每个用例的运行情况,跳过的用例也会显示跳过的 reason。
HTMLTestRunner
使用 TextTestRunner 显示的测试结果依然不够直观,只有借助第三方的测试报告来更好的展示结果。
流通最广的报告库是HTMLTestRunner
,由于原作者的版本只支持 Python2,支持 Python3 版本的库可以从百度网盘下载:
链接:https://pan.baidu.com/s/1s4pyCCX6S3tXhHxgeX-nSg
提取码:23vi
复制这段内容后打开百度网盘手机App,操作更方便哦
由于修改后的版本并未加入 Pypi 仓库,不能通过 pip 下载,只有下载后把HTMLTestRunner.py
文件拷贝到 Python 安装目录下的Lib
目录。或者直接放在项目文件夹中,直接引用。
不管哪种方式,其使用方式如下:
from HTMLTestRunner import HTMLTestRunner
with open(r'test_report.html', 'wb') as f: # => 必须以wb的方式打开
runner = HTMLTestRunner(
stream=f, # => 可写的文件对象
title='add函数测试报告', # => 测试报告标题
description='win 10, python 3.8', # => 对本次测试的描述
)
runner.run(tests) # => tests是通过discover查找并构建的测试套件
运行报告如下:
注意,跳过和预期失败的用例不会展示,只会展示通过、失败或者异常的用例。
报告上的内容与用例及 run.py 文件的关系图:
Beautiful Report
Beautiful Report 是 TesterlifeRaymond 发布在 GitHub 上的一个适用于 unittest 的报告库,同样无法从 pypi 仓库通过 pip 下载。也可以从我的百度网盘下载:
链接:https://pan.baidu.com/s/13_iyLoD1iXICVK1RF7KVWg
提取码:5ryd
复制这段内容后打开百度网盘手机App,操作更方便哦
下载以后,解压出来,注意解压后的文件夹层级。将解压后的 BeautifulReport 目录放到 Python 根目录下的Lib/sites-packages
:
使用方式如下:
from BeautifulReport import BeautifulReport
runner = BeautifulReport(tests) # => tests是通过discover查找并构建的测试套件
runner.report(
description='add函数测试报告', # => 报告描述
filename='bf.html', # => 生成的报告文件名
log_path='.' # => 报告路径
)
运行后的效果如下:
BeautifulReport 会展示用例成功、失败和跳过的情况。并且可以通过两种方式添加用例描述:
- 直接使用注释
- 使用
_testMethodDoc
添加用例描述