zoukankan      html  css  js  c++  java
  • web端自动化——selenium项目集成HTML测试报告

    参考内容:

    虫师:《selenium2自动化测试实战——基于python语言》

    PS:书中的代码,只能做参考,最好还是自己码一码,不一定照搬就全是对的,实践出真知。。。

    随着软件不断迭代功能越来越多,对应的测试用例也会呈指数增长。一个实现几十个功能的项目,对应的用例可能有上百个甚至更多,如果全部集成在一个文件中,那么这个文件就很臃肿且维护麻烦。

    一个很好的方法就是将这些用例按照功能类型进行拆分,分散到不同测试文件中,即一个项目,对应多个分支。

    前言: 

    HTML测试报告

    对软件测试人员来讲,测试的产出很难衡量。换句话说,测试人员的价值比较难以量化和评估,相信这一点对软件测试人员来说深有体会。我们花费了很多时间与精力所做的自动化测试也是如此。所以,需要一份漂亮且通俗易懂的测试报告来展示自动化测试成果。显然,一个简单的Log文件是不够的。

    HTMLTestRunner是Python标准库unittest单元测试框架的一个扩展,它生成易于使用的HTML测试报告。HTMLTestRunner是在BSD许可证下发布的。

    下载地址如下:

    http://tungwaiyip.info/software/HTMLTestRunner.html

    这个扩展非常简单,只有一个HTMLTestRunner.py文件,选中后单击鼠标右键,在弹出的快捷菜单中选择链接另存为,将它保存到本地。安装方法也很简单,将其复制到Python安装目录下即可。

    Windows:将下载的文件保存到...PythonLib目录下。

    1.1 修改HTMLTestRunner

    因为HTMLTestRunner.py是基于Python 2开发的,为了使其支持Python 3的环境,需要对其中的部分内容进行修改。下面通过编辑器打开HTMLTestRmmer.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,' Time Elapsed: %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

     一、分拆后的实现代码(***实例)

    在pycharm中新建如下目录:

    test_baidu.py代码如下:

    from selenium import webdriver
    import unittest
    from time import *

    class MyDriver(unittest.TestCase):
    def setUp(self):
    self.driver = webdriver.Chrome()
    self.driver.maximize_window()
    self.driver.implicitly_wait(10)
    self.base_url = "https://www.baidu.com/"
    def test_baidu(self):
    driver = self.driver
    driver.get(self.base_url)
    driver.find_element_by_id("kw").send_keys("HTMLTestRunner")
    driver.find_element_by_id("su").click()
    sleep(3)
    title = driver.title
    self.assertEqual(title,'HTMLTestRunner_百度搜索')
    def tearDown(self):
    self.driver.quit()
    if __name__ == "__main__":
    unittest.main()

    test_youdao.py代码如下:

    from selenium import webdriver
    import unittest #导入单元测试框架
    from time import *

    class MyDriver(unittest.TestCase):
    def setUp(self):
    self.driver = webdriver.Chrome()
    self.driver.maximize_window()
    self.driver.implicitly_wait(10)
    self.base_url = "http://www.youdao.com/"
    def test_youdao(self):
    driver = self.driver
    driver.get(self.base_url)
    driver.find_element_by_xpath(".//*[@id='translateContent']").clear()
    driver.find_element_by_xpath(".//*[@id='translateContent']").send_keys("webdriver")
    driver.find_element_by_xpath(".//*[@id='form']/button").click()
    sleep(2)
    title = driver.title
    self.assertEqual(title,'【webdriver】什么意思_英语webdriver的翻译_音标_读音_用法_例句_在线翻译_有道词典')
    def tearDown(self):
    self.driver.quit()
    if __name__ == "__main__":
    unittest.main()

    HtmlReport.py代码如下:

    import unittest
    import time
    from HTMLTestRunner import HTMLTestRunner#将HTMLTestRunner模块导入
    #指定测试用例为当前文件夹的test_case目录
    test_dir='./test_case'
    discover=unittest.defaultTestLoader.discover(test_dir,pattern='test*.py')
    if __name__=='__main__':
    #按照一定格式获取当前时间
    now=time.strftime("%Y-%m-%d %H-%M-%S")
    filename=test_dir+'./'+now+'result.html'
    #通过open()方法以二进制写模式打开当前目录下的result.html,如果没有,则自动创建该文件。
    fp=open (filename,'wb')
    #定义测试报告:stream指定测试报告文件, title用于定义测试报告的标题,description用于定义测试报告的副标题。
    runner=HTMLTestRunner(stream=fp,title='百度搜索测试报告',description='用例测试执行情况:')
    # 运行项目组装的用例
    runner.run(discover)
    # 关闭报告文件
    fp.close()

    备注:运行上面HtmlReport.py代码,会在test_case目录下生成2018-11-12 13-41-56result.html的测试报告,使用浏览器打开如下图所示:

  • 相关阅读:
    ubuntu安装Elasticsearch
    PHP如何计算脚本执行时间
    MVC+EF中返回JSON的性能和安全问题
    博客园最新的一个模板样式有问题
    Entity Framework 批量插入很慢吗?我自己测试下
    用 Raphaël 绘制中国地图 + 显示数据
    博客园的手机版(非官方) MVC+jQuery.Mobile
    BitCovert,与移位,加法性能比较
    探讨微软ASP.NET AJAX控件开发技术(客户端)
    (十三)树【C++刷题】
  • 原文地址:https://www.cnblogs.com/linxiu-0925/p/9946070.html
Copyright © 2011-2022 走看看