zoukankan      html  css  js  c++  java
  • 生成HTML测试报告

    HTMLTestRunner是Python标准库unittest单元测试框架的一个扩展,可以生成易于使用的HTML测试报告,这个扩展很简单,只有一个HTMLTestRunner.py,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html。

    下载该文件,然后把它放到Python3的lib目录下,我的为:D:Python35Lib。

    1.修改HTMLTestRunner

    HTMLTestRunner.py是基于Python2开发的,如果是Python3环境,需要修改HTMLTestRunner.py文件。

    1 import StringIO修改为import io
    2 self.outputBuffer = StringIO.StringIO()修改为self.outputBuffer = io.StringIO()
    3 print >>sys.stderr, '
    Time Elapsed: %s' % (self.stopTime-self.startTime)修改为print(sys.stderr, '
    Time Elapsed: %s' % (self.stopTime-self.startTime))
    4 if not rmap.has_key(cls):修改为if not cls in rmap:
    5 uo = o.decode('latin-1')修改为uo = e
    6 ue = e.decode('latin-1')修改为ue = e

    在Python交互模式下引入HTMLTestRunner模块,没有报错,则说明添加成功:

    1 C:Users>python3
    2 Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32
    3 Type "help", "copyright", "credits" or "license" for more information.
    4 >>> import HTMLTestRunner
    5 >>>

    2.生成HTML测试报告

     1 # coding:utf-8
     2 import unittest
     3 from selenium import webdriver
     4 import time
     5 from HTMLTestRunner import HTMLTestRunner
     6 
     7 
     8 class TestBaidu(unittest.TestCase):
     9 
    10     def setUp(self):
    11         self.driver = webdriver.Firefox()
    12         self.driver.maximize_window()
    13         self.driver.implicitly_wait(10)
    14         self.base_url = "http://www.baidu.com"
    15 
    16     def tearDown(self):
    17         self.driver.quit()
    18 
    19     def test_baidu(self):
    20         driver = self.driver
    21         driver.get(self.base_url)
    22         driver.find_element_by_id("kw").send_keys("selenium")
    23         driver.find_element_by_id("su").click()
    24         time.sleep(3)
    25         self.assertEqual(driver.title, "selenium_百度搜索")
    26 
    27 
    28 if __name__ == '__main__':
    29     suite = unittest.TestSuite()
    30     suite.addTest(TestBaidu("test_baidu"))
    31     file = open("./resultReport.html", "wb")
    32     runner = HTMLTestRunner(stream=file, title="百度搜索测试报告",description="用例执行情况:")
    33     runner.run(suite)
    34     file.close()

    在当前目录打开resultReport.html:

     3.优化测试报告

    HTMLTestRunner可以读取doc string类型的注释,因此,只需要在测试类或者测试方法下添加doc string类型的注释即可显示测试类和测试方法的注释。

     1 # coding:utf-8
     2 import unittest
     3 from selenium import webdriver
     4 import time
     5 from HTMLTestRunner import HTMLTestRunner
     6 
     7 
     8 class TestBaidu(unittest.TestCase):
     9     """测试百度搜索"""
    10     def setUp(self):
    11         self.driver = webdriver.Firefox()
    12         self.driver.maximize_window()
    13         self.driver.implicitly_wait(10)
    14         self.base_url = "http://www.baidu.com"
    15 
    16     def tearDown(self):
    17         self.driver.quit()
    18 
    19     def test_baidu(self):
    20         """搜索关键词selenium"""
    21         driver = self.driver
    22         driver.get(self.base_url)
    23         driver.find_element_by_id("kw").send_keys("selenium")
    24         driver.find_element_by_id("su").click()
    25         time.sleep(3)
    26         self.assertEqual(driver.title, "selenium_百度搜索")
    27 
    28 
    29 if __name__ == '__main__':
    30     suite = unittest.TestSuite()
    31     suite.addTest(TestBaidu("test_baidu"))
    32     file = open("./resultReport.html", "wb")
    33     runner = HTMLTestRunner(stream=file, title="百度搜索测试报告",description="用例执行情况:")
    34     runner.run(suite)
    35     file.close()

    运行脚本,然后在当前目录下打开resultReport.html文件:

    4.修改测试报告名称

    在测试之前,如果不修改测试报告文件名,则运行结束后,之前的测试报告会被覆盖,为了避免这种情况,我们可以在文件命中添加时间。

    Python的time模块为我们提供了很多操作时间的方法:

     1 # coding:utf-8
     2 import time
     3 
     4 print(time.time())  # 返回当前时间(以秒为单位),自1970-01-01 00:00:00以来的秒数
     5 
     6 print(time.localtime())  # 将1970-01-01 00:00:00以来的秒转换为本地时间的元组
     7 
     8 print(time.ctime())  # 将1970-01-01 00:00:00以来的以秒为单位的时间转换为本地时间的字符串
     9 
    10 
    11 print(time.strftime(("%Y-%m-%d %H_%M_%S")))  # 根据设置的格式将时间元组转换为字符串
    12 """
    13     %Y  带世纪部分的十进制年份,2019
    14     %m  十进制表示的月份, [01,12].
    15     %d  十进制表示每月的第几天 [01,31].
    16     %H  24小时制十进制的小时 [00,23].
    17     %M  十进制表示的分钟数 [00,59].
    18     %S  十进制的秒数 
    19     %z  时区名称
    20     %a  星期的简称 ,Sun
    21     %A  星期的全称 ,Sunday
    22     %b  月份的简称,Mar
    23     %B  月份的全称,March
    24     %I  12小时制的小时 [01,12].
    25     %p  本地的AM或PM的等价显示 
    26 """

    修改测试脚本:

    1 if __name__ == '__main__':
    2     suite = unittest.TestSuite()
    3     suite.addTest(TestBaidu("test_baidu"))
    4     now_time = time.strftime("%Y-%m-%d %H_%M_%S")
    5     file_name = "./"+now_time+"result.html"
    6     file = open(file_name, "wb")
    7     runner = HTMLTestRunner(stream=file, title="百度搜索测试报告",description="用例执行情况:")
    8     runner.run(suite)
    9     file.close()

    然后运行测试脚本,即可生成不同名称的测试报告。

    4.输出项目集成测试报告

    修改runnertest.py文件,使其可以生成项目集成测试报告。

     1 # coding:utf-8
     2 import unittest
     3 from HTMLTestRunner import HTMLTestRunner
     4 import time
     5 
     6 discover = unittest.defaultTestLoader.discover("./testpro/testcase/", "test*.py")
     7 if __name__ == '__main__':
     8 
     9     now_time = time.strftime("%Y-%m-%d %H-%M-%S")
    10     file_name = "./testpro/testresult/"+now_time+"result.html"
    11     file = open(file_name, "wb")
    12     runner = HTMLTestRunner(stream=file, title="测试报告", description="测试用例执行情况")
    13     runner.run(discover)

    执行测试脚本,查看生成的测试报告:

  • 相关阅读:
    关于C#登录三层
    SQL 语句关于分页的写法
    C# 如何去掉button按钮的边框线
    20151220
    继承
    对象的旅行
    多态
    封装
    OO大原则
    javascript
  • 原文地址:https://www.cnblogs.com/zhuzhaoli/p/10502212.html
Copyright © 2011-2022 走看看