引用原始的HTMLTestRunner.py文件生成的测试报告在美观性不是很好,使用在此文件基础上优化后的HTMLTestReportCN.py文件(生成的报告为中文)、HTMLTestReportEN.py文件(生成的报告为英文)。

测试报告-HTMLTestRunner报告优化(中/英文)_用例

1 首先新建一个Python项目

例如:testHtmlReport

创建case包,用于存放测试用例(test_case1.py、test_case2.py)。

创建plugins包,用于存放生成测试报告扩展文件(HTMLTestReportCN.py、HTMLTestReportEN.py)。

创建report文件夹,执行脚本指定测试报告生成在此文件夹里。

创建run_all_cn.py(执行后生成中文报告)、run_all_en.py(执行后生成英文报告)为执行测试用例文件。

测试报告-HTMLTestRunner报告优化(中/英文)_测试用例_02

2 测试用例

2.1、test_case1.py(测试用例)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
测试用例1
"""
from selenium import webdriver
import unittest

class Test1(unittest.TestCase):
    '''测试用例1测试'''
    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome()

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()

    def test_01(self):
        '''失败用例'''
        self.driver.get('https://www.baidu.com')
        self.driver.find_element_by_id('kw1').send_keys('百度一下')
        self.assertTrue(True)

    def test_02(self):
        '''失败用例'''
        self.driver.get('https://mail.126.com/')
        self.assertIn('163',self.driver.title)

    def test_03(self):
        '''成功用例'''
        self.driver.get('https://cn.bing.com/')
        self.assertIn('Bing',self.driver.title)

if __name__ == '__main__':
    unittest.main(verbosity=2)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.

2.2、test_case2.py(测试用例)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
测试用例2
"""
from selenium import webdriver
import unittest

class Test2(unittest.TestCase):
    '''测试用例2测试'''
    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome()

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()

    def test_01(self):
        '''成功用例'''
        self.driver.get('https://www.baidu.com')
        self.driver.find_element_by_id('kw').send_keys('百度一下')

    def test_02(self):
        '''成功用例'''
        self.driver.get('https://cn.bing.com/')

if __name__ == '__main__':
    unittest.main(verbosity=2)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.

2.3、run_all_cn.py(执行用例,生成中文报告)

引入HTMLTestReportCN,设置报告名称、描述、报告路径、测试者、输出报告详细程度等。

脚本代码:

代码语言:javascript

复制

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
执行用例
"""
import unittest, time
import os
from plugins import HTMLTestReportCN

# 或者将HTMLTestReportCN文件拷贝到Python安装目录里的Lib文件夹下
# import HTMLTestReportCN

# 获取路径
cur_path = os.path.dirname(os.path.realpath(__file__))

# 测试用例路径
case_path = os.path.join(cur_path, 'case')

# 测试报告路径
report_path = os.path.join(cur_path, 'report')

if __name__ == "__main__":
    # 构造测试集
    suite = unittest.defaultTestLoader.discover(case_path,'test*.py')

    # 获取当前时间
    now = time.strftime('%Y-%m-%d %H_%M_%S')

    # 定义测试报告
    runner = HTMLTestReportCN.HTMLTestRunner(title='自动化测试报告',
                                            description='用例执行情况:',
                                            stream=open(report_path + '\\' + now + ' HTMLReportCN.html', 'wb'),
                                            tester='admin',
                                            verbosity=2
                                            )
    # 运行测试用例
    runner.run(suite)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.

2.4、run_all_en.py(执行用例,生成英文报告)

引入HTMLTestReportEN,设置报告名称、描述、报告路径、测试者、输出报告详细程度等。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
执行用例
"""
import unittest, time
import os
from plugins import HTMLTestReportEN

# 或者将HTMLTestReportEN文件拷贝到Python安装目录里的Lib文件夹下
# import HTMLTestReportEN

# 获取路径
cur_path = os.path.dirname(os.path.realpath(__file__))
# 测试用例路径
case_path = os.path.join(cur_path, 'case')
# 测试报告路径
report_path = os.path.join(cur_path, 'report')

if __name__ == "__main__":
    # 构造测试集
    suite = unittest.defaultTestLoader.discover(case_path,'test*.py')
    # 获取当前时间
    now = time.strftime('%Y-%m-%d %H_%M_%S')
    # 定义测试报告
    runner = HTMLTestReportEN.HTMLTestRunner(title='自动化测试报告',
                                            description='用例执行情况:',
                                            stream=open(report_path + '\\' + now + ' HTMLReportEN.html', 'wb'),
                                            tester='admin',
                                            verbosity=2
                                            )
    # 运行测试用例
    runner.run(suite)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.

3.1、执行run_all_cn.py文件

运行结果:

测试报告-HTMLTestRunner报告优化(中/英文)_测试用例_03

在项目的report目录里自动生成中文测试报告。

测试报告-HTMLTestRunner报告优化(中/英文)_用例_04

双击打开中文测试报告,效果如下:

优化了:样式美化、显示测试人员、统计通过率、按钮显示相应用例个数等。

测试报告-HTMLTestRunner报告优化(中/英文)_测试用例_05

3.2、执行run_all_en.py文件

运行结果:

测试报告-HTMLTestRunner报告优化(中/英文)_测试用例_06

在项目的report目录里自动生成英文测试报告。

测试报告-HTMLTestRunner报告优化(中/英文)_测试用例_07

双击打开英文测试报告,效果如下:

优化了:样式美化、显示测试人员、统计通过率、按钮显示相应用例个数等。

测试报告-HTMLTestRunner报告优化(中/英文)_测试用例_08