• Selenium:HTML测试报告


    自动化测试过程中,获得用例的执行结果后,需要有具象化、简洁明了的测试结果,比如:用例执行时间、失败用例数、失败的原因等,这时候,就需要用到测试报告。

    HTML测试报告是python语言自带的单元测试框架,其扩展的HTMLTestRunner模块可用于生成易于使用的HTML测试报告。

    1、HTMLTestRunner下载

    下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html

    下载完成后,将下载的文件保存到C盘的Python35Lib目录下(可以通过如下命令获取python安装目录):

    ①进入cmd命令行

    ②输入python

    ③输入import sys

    ④输入print(sys.path)

    1 C:Usersdell>python
    2 Python 3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)] on win32
    3 Type "help", "copyright", "credits" or "license" for more information.
    4 >>> import sys
    5 >>> print(sys.path)
    6 ['', 'C:\Users\dell\AppData\Local\Programs\Python\Python35\python35.zip', 'C:\Users\dell\AppData\Local\Programs\Python\Python35\DLLs',
    'C:\Users\dell\AppData\Local\Programs\Python\Python35\lib', 'C:\Users\dell\AppData\Local\Programs\Python\Python35', 'C:\Users\dell\
    AppData\Local\Programs\Python\Python35\lib\site-packages
    ']

    2、修改HTMLTestRunner文件

    因为HTMLTestRunner是基于python2开发的,为了使其支持python3的环境,需要对其中的部分内容进行修改,修改后的内容如下:

     1 # HTMLTestRunner修改内容
     2 # 第94行
     3 import io
     4 # 第539行
     5 self.outputBuffer = io.StringIO()
     6 # 第631行
     7 print(sys.stderr, '
    Time Elapsed: %s' % (self.stopTime-self.startTime))
     8 # 第642行
     9 if not cls in rmap:
    10 # 第766行
    11 uo = o
    12 # 第772行
    13 ue = e

    3、python文件执行与调用

    ①python文件的后缀为.py

    ②py文件既可以用来执行,就像一小段程序,也可以用来作为模块被导入

    ③在python中导入模块一般用import

    代码如下:

     1 from selenium import webdriver
     2 import unittest
     3 import time
     4 
     5 class MyTest(unittest.TestCase):
     6     def setUp(self):
     7         self.driver = webdriver,Chrome("F:安装工具pythonchromedriver.exe")
     8         self.driver.maximize_window()
     9         self.driver.implicitly.wait(10)
    10         self.base_url = "http://www.baidu.com"
    11 
    12     def test_baidu(self):
    13         driver = self.driver
    14         driver.get(self.base_url + "/")
    15         driver.find_element_by_id("kw").clear()
    16         driver.find_element_by_id("kw").send_key("unittest")
    17         driver.find_element_by_id("su").click()
    18         time.sleep(2)
    19         title = assertEqual(title,"unittest_百度搜索")
    20 
    21     def tearDown(self):
    22         self.driver.quit()
    23 
    24 if __name__ == "__main__":
    25     unittest.main()

    4、HTMLTestRunner测试报告

    以上面的test_baidu.py文件为例子,生成HTMLTestRunner测试报告,代码如下:

     1 from selenium import webdriver
     2 import unittest
     3 from HTMLTestRunner import HTMLTestRunner
     4 
     5 class Baidu(unittest.TestCase):
     6     def setUp(self):
     7         self.driver = webdriver.Chrome("F:安装工具pythonchromedriver.exe")
     8         self.driver.implicitly_wait(10)
     9         self.base_url = "http://www.baidu.com/"
    10 
    11     def test_baidu_search(self):
    12         driver = self.driver
    13         driver.get(self.base_url)
    14         driver.find_element_by_id("kw").send_key("HTMLTestRunner")
    15         driver.find_element_by_id("su").click()
    16 
    17     def tearDown(self):
    18         self.driver.quit()
    19 
    20 
    21 if __name__ == "__main__":
    22     baidu = Baidu("test_baidu_search")
    23     testunit = unittest.TestSuite()
    24     testunit.addTest(baidu)
    25 
    26     # 定义报告存放路径
    27     fp = open('./result.html', 'wb')
    28     # 定义测试报告
    29     runner = HTMLTestRunner(stream=fp,
    30                         title='百度搜索测试报告',
    31                         description= '用例执行情况:')
    32     runner.run(testunit) #运行测试用例
    33     fp.close() #关闭报告文件

    代码简析:

    ①将HTMLTestRunner模块用import导入

    ②通过open()方法以二进制写模式打开当前目录下的result.html,如果没有则自动创建该文件

    ③调用HTMLTestRunner模块下的HTMLTestRunner类,stream指定测试报告文件,title用于定义测试报告的标题,description用于定义测试报告的副标题

    ④通过HTMLTestRunner的run方法运行测试套件中所组装的测试用例,最后通过close()关闭测试报告文件

    以上为方便展示写的例子,没有太多实际意义,具体的还是需要在工作中使用实践,关于unittest框架,后续会慢慢介绍。。。

  • 相关阅读:
    IT程序猿”是怎样练成的? 之 提升内驱力的7大秘籍转
    wp7 退出程序的提示对话框
    生活不容易
    Decorator模式学习
    用序列化方法实现的Prototype的深拷贝
    Observer pettern
    Adapter模式学习
    bridge模式学习
    Composite模式学习
    Prototype原形设计模式
  • 原文地址:https://www.cnblogs.com/imyalost/p/7282802.html
Copyright © 2020-2023  润新知