• python自动化--批量执行测试之生成报告


    一、生成报告

    1.先执行一个用例,并生成该用例的报告

    # -*- coding: utf-8 -*-
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support.ui import Select
    from selenium.common.exceptions import NoSuchElementException
    from selenium.common.exceptions import NoAlertPresentException
    import unittest, time, re,HTMLTestRunner
    
    class Baidy(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Firefox()
            self.driver.implicitly_wait(30)
            self.base_url = "https://www.baidu.com"
            self.verificationErrors = []
            self.accept_next_alert = True
        
        def test_baidy(self):
            u"""百度搜索"""
            driver = self.driver
            driver.get(self.base_url + "/")
            driver.find_element_by_id("kw").clear()
            driver.find_element_by_id("kw").send_keys("selenium webdriver")
            driver.find_element_by_id("su").click()
            time.sleep(2)
            driver.close()
    
        def test_baidu_set(self):
            u"""百度设置"""
            driver = self.driver
            #  进入搜索设置页面
            driver.get(self.base_url+'/gaoji/preferences.html')
    
            menu = driver.find_element_by_id("nr")
            menu.find_element_by_xpath(".//option[@value='20']").click()
            driver.find_element_by_id("save").click()
            driver.switch_to_alert().accept()
            time.sleep(2)
            driver.close()
    
        
        def tearDown(self):
            self.driver.quit()
            self.assertEqual([], self.verificationErrors)
    
    if __name__ == "__main__":
        #  定义一个单元测试容器
        testunit = unittest.TestSuite()
        testunit.addTest(Baidy.test_baidy)
        testunit.addTest(Baidy.test_baidu_set)
    
        #  定义报告存放路径
        filename = r'E:abcweb_testing
    esult.html'
        fp = file(filename, 'wb')
    
        #  定义测试报告
        runner = HTMLTestRunner.HTMLTestRunner(
            stream=fp,
            title=u'百度搜索测试报告',
            description=u'用例执行情况:')
    
        #  运行测试用例
        runner.run(testunit)
        fp.close()
    View Code

    2.批量执行测试用例,先构造两个用例

    # -*- coding: utf-8 -*-
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support.ui import Select
    from selenium.common.exceptions import NoSuchElementException
    from selenium.common.exceptions import NoAlertPresentException
    import unittest, time, re,HTMLTestRunner
    
    class Baidy(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Firefox()
            self.driver.implicitly_wait(30)
            self.base_url = "https://www.baidu.com"
            self.verificationErrors = []
            self.accept_next_alert = True
        
        def test_baidy(self):
            u"""百度搜索"""
            driver = self.driver
            driver.get(self.base_url + "/")
            driver.find_element_by_id("kw").clear()
            driver.find_element_by_id("kw").send_keys("selenium webdriver")
            driver.find_element_by_id("su").click()
            time.sleep(2)
            driver.close()
    
        def test_baidu_set(self):
            u"""百度设置"""
            driver = self.driver
            #  进入搜索设置页面
            driver.get(self.base_url+'/gaoji/preferences.html')
    
            menu = driver.find_element_by_id("nr")
            menu.find_element_by_xpath(".//option[@value='20']").click()
            driver.find_element_by_id("save").click()
            driver.switch_to_alert().accept()
            time.sleep(2)
            driver.close()
    
        
        def tearDown(self):
            self.driver.quit()
            self.assertEqual([], self.verificationErrors)
    
    if __name__ == "__main__":
        unittest.main()
    baidy.py
    # -*- coding: utf-8 -*-
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support.ui import Select
    from selenium.common.exceptions import NoSuchElementException
    from selenium.common.exceptions import NoAlertPresentException
    import unittest, time, re
    
    class Youdao(unittest.TestCase):
    
        def setUp(self):
            self.driver = webdriver.Firefox()
            self.driver.implicitly_wait(30)
            self.base_url = "http://www.youdao.com"
            self.verificationErrors = []
            self.accept_next_alert = True
        
        def test_youdao_search(self):
            u"""有道搜索"""
            driver = self.driver
            driver.get(self.base_url + "/")
            #  driver.find_element_by_id("query").clear()
            #  driver.find_element_by_id("query").send_keys(u"你好")
            #  driver.find_element_by_id("qb").click()
            driver.find_element_by_id("translateContent").clear()
            driver.find_element_by_id("translateContent").send_keys(u"你好")
            driver.find_element_by_xpath(".//*[@id='form']/button").click()
            time.sleep(2)
            driver.close()
    
        
        def tearDown(self):
            self.driver.quit()
            self.assertEqual([], self.verificationErrors)
    
    if __name__ == "__main__":
        unittest.main()
    youdao.py

    并构造测试套件:根据套件来执行这两个文件的几条用例(baidu.py两条用例,youdao.py三条用例)

    代码:

    # -*- coding:utf-8 -*-
    import unittest
    import baidy,youdao
    import HTMLTestRunner
    import time
    
    testunit = unittest.TestSuite()
    
    #  将测试用例加入到测试容器(套件)中
    testunit.addTest(unittest.makeSuite(baidy.Baidy))
    testunit.addTest(unittest.makeSuite(youdao.Youdao))
    
    #  执行测试套件
    #  runner = unittest.TextTestRunner()
    #  runner.run(testunit)
    
    
    #  定义报告存放路径,支持相对路径
    filename = r"E:abcweb_testing	est_caseall_test.html"
    fp = file(filename, 'wb')
    
    runner = HTMLTestRunner.HTMLTestRunner(
        stream=fp,
        title=u'百度搜索测试报告',
        description=u'用例执行情况')
    
    #  执行测试用例
    runner.run(testunit)
    fp.close()
    all_test.py

    注意,报告的基本格式如下:

    #  定义报告存放路径,支持相对路径
    filename = r"E:abcweb_testing	est_caseall_test.html"
    fp = file(filename, 'wb')
    
    runner = HTMLTestRunner.HTMLTestRunner(
        stream=fp,
        title=u'百度搜索测试报告',
        description=u'用例执行情况')
    
    #  执行测试用例
    runner.run(testunit)
    fp.close()

    生成的报告如下:

    二、报告文件取当前的时间

    在all_test.py中引入time,即import time,几个time的常用函数:

    time.time() 获取当前时间戳
    time.localtime() 当前时间的 struct_time 形式
    time.ctime() 当前时间的字符串形式
    time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

    将all_test.py文件改为:

    ...
    #  取前面时间
    now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
    
    
    #  定义报告存放路径,支持相对路径
    filename = r"E:abcweb_testing	est_case"+ now +'all_test.html'
    fp = file(filename, 'wb')
    
    runner = HTMLTestRunner.HTMLTestRunner(
        stream=fp,
        title=u'百度搜索测试报告',
        description=u'用例执行情况')
    ...

    执行用例,即报错:

    IOError: [Errno 22] invalid mode ('wb') or filename: 'E:\abc\web_testing\test_case2016-12-21 19:43:20all_test.html'

    这是因为时间不能用“:”冒号

    now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))

    将它改成:

    now = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))

    即可

    以上内容感谢虫师的相关博客和书籍

  • 相关阅读:
    【转载】webDriver拾级而上·之五 iframe的处理
    Linux课程笔记 用户和用户组管理
    Linux课程笔记 文件和目录权限
    Linux课程笔记 软硬链接
    Java算法面试题
    Linux课程笔记 Day09 课上内容总结 MySql,Php的安装及Apache,Nginx,Php的优化
    Day13 高级子查询
    Day12 SET运算符
    Day11 其他数据库对象
    Linux课程笔记 Day08 课上内容总结 Apache,Raid技术及Nginx
  • 原文地址:https://www.cnblogs.com/xiaobucainiao/p/6208886.html
Copyright © 2020-2023  润新知