定义
HTML测试报告就是执行完测试用例后, 以HTML(网页)方式将执行结果生成报告
HTML生成报告方式
1. TextTestRunner生成 (UnitTest 自带)
2. HTMLTestRunner(第三方模板) 【重点】
TextTestRunner生成 报告示例
用例
case文件夹
test01.py
# 导包
import unittest
# 新建测试类
class Test01(unittest.TestCase):
def test01(self):
print("Test02_test01")
def test02(self):
print("Test02_test02")
test02.py
# 导包
import unittest
# 新建测试类
class Test01(unittest.TestCase):
def test01(self):
print("Test02_test01")
def test02(self):
print("Test02_test02")
运行脚本
scripts文件夹
run_main.py
版本一:控制台输出结果
# 导包
import unittest
# 定义 测试套件
suite = unittest.defaultTestLoader.discover("../case")
# 执行最初版
runner = unittest.TextTestRunner()
runner.run(suite)
"""
Test01_test01
Test01_test02
Test02_test01
Test02_test02
....
----------------------------------------------------------------------
Ran 4 tests in 0.000s
OK
"""
版本二:报告内容写入txt,需先了解以下内容
以下是
TextTestRunner
的各个参数及其含义:
stream
:
- 类型:文件对象
- 默认值:
sys.stderr
- 说明:用于输出测试结果的流(例如控制台、文件等)。默认情况下,测试结果会输出到标准错误输出(
sys.stderr
)。
descriptions
:
- 类型:布尔值
- 默认值:
True
- 说明:是否在输出结果中包含测试用例的描述。描述通常是测试方法的
docstring
(文档字符串)。
verbosity
:
- 类型:整数
- 默认值:1
- 说明:控制输出的详细程度。可选值如下:
0
:安静模式,只有测试结果摘要(包括总数、成功数、失败数等)。1
:默认模式,每个成功的测试用例输出一个点(.
),每个失败的测试用例输出一个F
。2
:详细模式,输出每个测试用例的名称和结果。
# 导包
import unittest
# 定义 测试套件
suite = unittest.defaultTestLoader.discover("../case")
# 执行txt版本
with open("../report/report.txt", "w", encoding="utf-8") as f:
runner = unittest.TextTestRunner(stream=f, descriptions="测试报告演示", verbosity=2)
runner.run(suite)
# txt中显示的内容
test01 (test01.Test01.test01) ... ok
test02 (test01.Test01.test02) ... ok
test01 (test02.Test01.test01) ... ok
test02 (test02.Test01.test02) ... ok
----------------------------------------------------------------------
Ran 4 tests in 0.000s
OK
HTMLTestRunne测试报告 生成步骤分析
1. 复制HTMLTestRunner.py文件到项目文件夹
2. 导入HTMLTestRunner、 unittest包
3. 生成测试套件
suite = unittest.TestSuite()
suite.addTest(TestLogin("test_login"))
suite = unittest.defaultTestLoader.discover(test_dir, pattern="test*.py")4. 设置报告生成路径和文件名
file_name = "./report/report.html"5. 打开报告 with open(file_name,'wb') as f:
6. 实例化HTMLTestRunner对象:
runner = HTMLTestRunner(stream=f,[title],[description])
参数说明:
stream: 文件流, 打开写入报告的名称及写入编码格式)
title: [可选参数], 为报告标题, 如XXX自动化测试报告
description: [可选参数], 为报告描述信息; 比如操作系统、 浏览器等版本7. 执行: runner.run(suite)
"""
目标:基于unittest框架执行生成html版报告
操作:
1. 复制HtmlTestRunner.py文件到指定目录
2. 导包 from HTMLTestRunner import HTMLTestRunner
3. 获取报告存放文件流,并实例化HTMLTestRunner类,执行run方法
"""
# 导包
import unittest
import time
from tools.HTMLTestRunner import HTMLTestRunner
# 定义 测试套件
suite = unittest.defaultTestLoader.discover("../case", pattern="test*.py")
# 定义报告存放路径及文件名称
report_dir = "../report/{}.html".format(time.strftime("%Y_%m_%d %H_%M_%S"))
# 获取报告文件流 并执行
with open(report_dir, "wb") as f:
HTMLTestRunner(stream=f,
title="XX项目自动化测试报告",
description="操作系统 win7").run(suite)