zoukankan      html  css  js  c++  java
  • selenium+python之HTML测试报告

    r一、准备

    1、本节用到的模块——HTMLTestRunner

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

    鼠标右键→目标另存为,保存到本地。

    2)安装:将下载的HTMLTestRunner.py文件复制到Python安装目录下即可

    ...Python36Lib

    3)验证:在Python交互模式下引入HTMLTestRunner模块,如系统没有报错,则说明添加成功

    2、修改HTMLTestRunner

    因为HTMLTestRunner是基于Python2开发的,如果在Python3环境下使用,需要对其部分内容进行修改。使用notepad++打开HTMLTestRunner.py文件,修改如下内容: 

    第94行,将import StringIO修改成import io

    第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer= io.StringIO()

    第631行,将print >> sys.stderr, ‘ Time Elapsed: %s‘ %(self.stopTime-self.startTime)修改成print(sys.stderr, ‘ TimeElapsed: %s‘ % (self.stopTime-self.startTime))

    第642行,将if not rmap.has_key(cls):修改成if not cls in rmap:

    第766行,将uo = o.decode(‘latin-1‘)修改成uo = e

    第772行,将ue = e.decode(‘latin-1‘)修改成ue = e 


    二、生成HTML测试报告

    以百度搜索为例生成HTML测试报告

    1、代码实现

    # -*- coding: utf-8 -*-
    from selenium import webdriver
    from HTMLTestRunner import HTMLTestRunner
    import unittest,time
    
    class BaiduIdeTest(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Firefox()
            self.driver.implicitly_wait(30)
            self.base_url = "https://www.baidu.com/"
    
        
        def test_baidu_ide(self):
            driver = self.driver
            driver.get(self.base_url)
            driver.find_element_by_id("kw").clear()
            driver.find_element_by_id("kw").send_keys("HTMLTestRunner")
            driver.find_element_by_id("su").click()
            time.sleep(5)
            self.assertEqual(u"HTMLTestRunner_百度搜索", driver.title)
        
    
    
        def tearDown(self):
            self.driver.quit()
    
    
    if __name__ == "__main__":
        #构造测试套件
        testsuit = unittest.TestSuite()
        testsuit.addTest(BaiduIdeTest("test_baidu_ide"))
        #定义测试报告存放路径
        fp = open('./result.html','wb')
        #定义测试报告
        runner = HTMLTestRunner(stream=fp,
                                title='自动化测试报告',
                                description='用例执行情况:')
        runner.run(testsuit)
        #关闭测试报告
        fp.close()

    2、代码分析

    1)将HTMLTestRunner模块用import导入进来。

    2)通过open()方法以二进制写模式('wb')打开当前目录下的result.heml,如果没有,则自动创建。

    3)调用HTMLTestRunner模块下的HTMLTestRunner类。

      stream 指定测试报告文件

      title 定义测试报告的标题

      description 定义测试报告的副标题

    4)通过HTMLTestRunner的run()方法来运行测试套件中的测试用例

    5)关闭测试报告文件close()

    3、代码效果

     

    4、tips

    代码执行的时候将鼠标放到“if __name__ == "__main__":”右键选择“Run'baidu_ide_text'” 而不要使用“Run untitest in baidu_ide_text'”,否则无法生成测试报告

     三、更易读的测试报告

    通过Python的doc string类型的注释增强测试报告的可度性。

    python代码注释分为两种:commen(普通注释#开头)和doc string(描述函数、类和方法三引号表示)

    1、代码实现

    ......
    class BaiduIdeTest(unittest.TestCase):
        '''百度搜索测试'''
        def setUp(self):
            self.driver = webdriver.Firefox()
            self.driver.implicitly_wait(30)
            self.base_url = "https://www.baidu.com/"
    
        
        def test_baidu_ide(self):
            '''搜索关键字'''
            driver = self.driver
            driver.get(self.base_url)
            driver.find_element_by_id("kw").clear()
            driver.find_element_by_id("kw").send_keys("HTMLTestRunner")
            driver.find_element_by_id("su").click()
            time.sleep(5)
            self.assertEqual(u"HTMLTestRunner_百度搜索", driver.title)
    ........

    2、代码效果

    四、测试报告名称

    使用python的time模块,在报告名称中加入当前时间增强测试报告文件的识别性。

     1、知识准备

    time.time():获取当前时间戳

    time.ctime():当前时间的字符串形式

    time.location():当前时间的struct_time形式

    time.strftime():获得当前时间,可以将时间格式化字符串

    常用格式化符号:

    %Y:带世纪的年,2017

    %y:不带世纪的年,17

    %m:月份

    %d:天

    %H:24小时制的小时

    %M:分

    %S:秒

    2、代码实现

    ......
    if __name__ == "__main__":
        #构造测试套件
        testsuit = unittest.TestSuite()
        testsuit.addTest(BaiduIdeTest("test_baidu_ide"))
        
        #按照一定格式获取当前时间
        now = time.strftime("%Y%m%d_%H%M%S")
        #将当前时间加入到报告文件名称中
        filename = './'+now+'result.html'
        #定义测试报告存放路径
        fp = open(filename,'wb')
        #定义测试报告
        runner = HTMLTestRunner(stream=fp,
                                title='自动化测试报告',
                                description='用例执行情况:')
        runner.run(testsuit)
        #关闭测试报告
        fp.close()

    3、代码效果

    五、项目集成测试报告

    将以上内容集成到项目的runtest.py文件中,使其作用于整个测试项目

    1、代码实现

    # -*- coding: utf-8 -*-
    from selenium import webdriver
    import unittest, time
    
    class YoudaoIdeTest(unittest.TestCase):
        '''有道翻译测试'''
        def setUp(self):
            self.driver = webdriver.Firefox()
            self.driver.implicitly_wait(30)
            self.base_url = "http://www.youdao.com/"
    
        
        def test_youdao_ide(self):
            '''中英翻译测试'''
            driver = self.driver
            driver.get(self.base_url)
            driver.find_element_by_id("translateContent").clear()
            driver.find_element_by_id("translateContent").send_keys(u"自动化测试报告")
            driver.find_element_by_css_selector("button").click()
            time.sleep(5)
            self.assertEqual(u"【自动化测试报告】", driver.title)
    
        
        def tearDown(self):
            self.driver.quit()
    
    
    if __name__ == "__main__":
        unittest.main()

    2、代码效果

  • 相关阅读:
    安装VMWare tools 及安装后/mnt中有hgfs但没共享文件的解决办法
    linux挂载命令
    RHEL7/CentOS7 Network Service开机无法启动的解决方法
    linux消息队列编程实例
    Linux进程间通信——使用消息队列
    消息队列函数
    ipcs查看消息队列命令
    linux批量删除
    HTTP 请求消息头部实例:
    drf 序列化组件
  • 原文地址:https://www.cnblogs.com/huiguniang/p/7154735.html
Copyright © 2011-2022 走看看