HTMLTestRunner 是 unittest 的一个扩展,它可以生成易于使用的 HTML 测试报告。
HTMLTestRunner 是在 BSD 许可证下发布的。
-
HTMLTestRunner 的下载和安装:
下载:这里为大家提供我的百度网盘的分享地址下载(HTMLTestRunner.py文件已做优化,增加饼图显示):
链接: https://pan.baidu.com/s/1JoIjPoZwv9w9cv0VM35fTw
提取码: 5swi -
安装:
HTMLTestRunner 的使用非常简单,它是一个独立的 HTMLTestRunner.py 文件,既可
以把它当作 Python 的第三方库来使用,也可以将把它当作项目的一部分来使用。只需要把HTMLTestRunner.py 文件放在python的安装目录下即可,如:E:\install\python\Lib
打开 Python Shell,验证安装是否成功:
如果没有报错,则说明安装成功。 -
使用:
HTMLTestRunner 类的部分实现,主要看__init__()初始化方法的参数:- stream:指定生成 HTML 测试报告的文件,必填。
- verbosity:指定日志的级别,默认为 1。如果想得到更详细的日志,则可以将参数 修改为 2。
- title:指定测试用例的标题,默认为 None。
- description:指定测试用例的描述,默认为 None
执行测试用例,生成测试报告demo实现:
项目目录:
Tips:echarts.min.js组件下载链接:https://echarts.apache.org/zh/download.html
在case目录下,创建一个test_baidu.py文件,源码如下:
# 粥粥yan
# 开发时间:2021/7/16 14:36
# coding:utf-8
import unittest
from time import sleep
from selenium import webdriver
class TestBaidu(unittest.TestCase):
""" 百度搜索测试 """
# 类执行前调用
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Chrome()
cls.base_url = "https://www.baidu.com"
# 封装百度搜索方法
def search_result(self, search_key):
self.driver.get(self.base_url)
self.driver.find_element_by_id('kw').send_keys(search_key)
self.driver.find_element_by_id('su').click()
sleep(5)
def test_search_key_selenium(self):
"""" 搜索关键字:selenium """
search_key = 'selenium'
self.search_result(search_key)
# 虽然两个用例断言的结果一样,但是不建议断言放公共方法中,断言放测试用例中看的会更直观,而且有的测试用例虽然测试步骤一样,但是断言的结果未必一致
self.assertEqual(self.driver.title, search_key+'_百度搜索')
def test_search_key_unittest(self):
"""" 搜索关键字:unittest """
search_key = 'unittest'
self.search_result(search_key)
self.assertEqual(self.driver.title, search_key + '_百度搜索')
# 类结束执行调用
def test_search_key_html(self):
"""" 搜索关键字:html """
search_key = 'html'
self.search_result(search_key)
self.assertEqual(self.driver.title, search_key + '_error')
# 类结束执行调用
def test_search_key_python(self):
"""" 搜索关键字:python """
search_key = 'python'
self.search_result(search_key)
self.assertEqual(self.driver.title, search_key + '__error2')
# 类结束执行调用
@classmethod
def tearDownClass(cls):
cls.driver.quit()
if __name__ == '__main__':
unittest.main()
在test_selenuim_unittest目录下创建一个执行多个测试文件的run_test.py文件,源码如下:
'''
如何执行多个测试文件呢?
unittest中的TestLoader类提供的discover()方法可以从多个文件中查找测试用例。
discover(start_dir,pattern='test*.py',top_level_dir=None)
start_dir :待测试的模块名或测试用例目录。
pattern='test*.py' :测试用例文件名的匹配原则。此处匹配文件名以“test”开头
的“.py”类型的文件,星号“*”表示任意多个字符。
top_level_dir=None:测试模块的顶层目录,如果没有顶层目录,则默认为 None。
'''
import unittest
import HTMLTestRunner
import time
test_dir = './case'
suits = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')
if __name__ == '__main__':
# 使用TextTestRunner 生成测试报告
# runner = unittest.TextTestRunner()
# 生成html格式的测试报告
now_time = time.strftime("%Y%m%d_%H%M%S")
fp = open('./reports/' + now_time + '_result.html', 'wb')
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title='百度搜索测试报告', description="运行环境:Windows 10, Chrome 浏览器")
runner.run(suits)
fp.close()
执行run_test.py文件:
生成的html测试报告:
打开html报告查看结果如下:
原创内容,转载请声明出处!