zoukankan      html  css  js  c++  java
  • 应用HTMLTestRunner整合测试报告

    为了便于测试脚本的维护,以及更多测试用例的管理,于是根据上次学习的HTMLTestRunner生成的测试报告,今天将对其进行整理。我们之前使用 TestSuite 只是在一个.py 文件里添加多个测试用例,那么我们可以法把多个.py 文件中的用例通过测试套件来组织。
    测试套件结构如图所示(在此,谢谢虫师博客的分享):
    这里写图片描述

    测试案例:
    1.通过加载baidu模块,sogou模块以及PythonOrg模块
    2.生成测试报告
    为此,本文的实际用例如下:
    这里写图片描述

    3.根据需要,写好测试脚本。待完成后的测试脚本分别另存为文件
    (TestBaidu.py,TestSogou.py,PythonOrg.py,All_HTMLTest.py)将其放在同一目录下,然后运行All_HTMLTest.py的脚本。

    测试脚本:
    TestBaidu.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
    
    import unittest
    import time
    import re
    import HTMLTestRunner
    class TestBaidu(unittest.TestCase):
        def setUp(self):
            self.browser=webdriver.Chrome()
            self.browser.implicitly_wait(30)
            self.base_url="http://www.baidu.com"
            self.verficationErrors=[]
            self.accept_next_alert=True
        def test_search(self):
            browser = self.browser
            browser.get(self.base_url+'/')
            browser.find_element_by_id("kw").clear()
            browser.find_element_by_id("kw").send_keys("自动化测试")
            browser.find_element_by_id("su").click()
            time.sleep(2)
            browser.find_element_by_id("su").submit()
            time.sleep(3)
            title=browser.title
            print ("title is %s"%title)
            time.sleep(5)
            browser.close()
        def test_link(self):
            browser=self.browser
            browser.get(self.base_url+'/') 
            browser.find_element_by_link_text("贴吧").click()
            time.sleep(5)
            browser.close()
        def tearDown(self):
            self.browser.quit()
            self.assertEqual([],self.verficationErrors)
    if __name__=="__main__":
        unittest.main()
    

    TestSogou.py
    测试搜索,微信link以及设置链接的控件。

    #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
    
    import unittest
    import time
    import re
    import HTMLTestRunner
    
    class TestSogou(unittest.TestCase):
        def setUp(self):
            self.browser=webdriver.Chrome()
            self.browser.implicitly_wait(30)
            self.base_url="https://www.sogou.com"
            self.verficationErrors=[]
            self.accept_next_alert=True
        def test_search(self):
            browser=self.browser
            browser.get(self.base_url+'/')
            browser.maximize_window()         
            keyworld=browser.find_element_by_name("query")
            keyworld.send_keys("Selenium Python")
            browser.find_element_by_id("stb").click()
            time.sleep(3)
            browser.close()
        def test_weixin(self):
            browser=self.browser
            browser.get(self.base_url+'/')
            browser.maximize_window()
            browser.find_element_by_link_text("微信").click()
            time.sleep(2)
            browser.close()
        def test_config(self):
            browser=self.browser
            browser.get(self.base_url+'/')
            browser.maximize_window()                             
            browser.find_element_by_class_name.
            ("s_usersetting").click()
            time.sleep(2)
            browser.close()
        def tearDown(self):
            self.browser.quit()
            self.assertEqual([],self.verficationErrors)
    
    if __name__=="__main__":
        unittest.main()
    

    PythonOrg.py
    测试搜索和link控件。

    import unittest
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    import os
    class PythonOrgSearch(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Chrome()
            #这样可以根据需要自动加载时间
            self.driver.implicitly_wait(30)
            self.base_url="http://www.python.org"
            self.verficationErrors=[]
            self.accept_next_alert=True
        def test_search(self):
            driver = self.driver
            driver.get(self.base_url+"/")
            self.assertIn("Python", driver.title)
            elem = driver.find_element_by_name("q")
            elem.send_keys("selenium")
            elem.send_keys(Keys.RETURN)
            #判断title中是否有Welcome字段
            self.assertIn("Welcome", driver.title)
            driver.close()
        def test_download(self):
            driver = self.driver
            driver.get(self.base_url+"/")
            self.assertIn("Python", driver.title 
            link=driver.find_element_by_link_text("Downloads")
            link.click()
            time.sleep(3)
            driver.close()
        def tearDown(self):
            self.driver.quit()
            self.assertEqual([],self.verficationErrors)
    if __name__ == "__main__":
        unittest.main()
    

    All_HTMLTest.py
    此.py加载了TestBaidu.py,TestSogou.py,PythonOrg.py

    #coding=utf-8
    import unittest
    #加载模块TestBaidu,TestSogou,PythonOrg
    import TestSogou
    import PythonOrg
    import TestBaidu
    
    import time
    import HTMLTestRunner
    
    testunit=unittest.TestSuite()
    #将测试用例加入到测试容器中
    testunit.addTest(unittest.makeSuite(TestSogou.TestSogou))
    testunit.addTest(unittest.makeSuite(PythonOrg.PythonOrgSearch))
    testunit.addTest(unittest.makeSuite(TestBaidu.TestBaidu))
    
    #runner=unittest.TextTestRunner()
    #runner.run(testunit)
    
    #导入当前时间,使用time模块的相关函数
    now=time.strftime("%Y-%m-%d_%H-%M-%S",time.localtime())
    #将测试结果写入到result.html中
    fp=open(now+"result.html",'wb')
    runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title='Test Report',description=u'Result:')
    runner.run(testunit)
    fp.close()
    

    F5运行,得到:
    这里写图片描述
    C:Python34,得到:
    这里写图片描述
    打开,此文件得到:
    这里写图片描述

    对于错误的case,可以根据实际情况再做讨论。
    这样一来,对于脚本的维护便利了很多。只需要根据需要,改动相关模块的脚本即可,或者根据需要添加需要的模块的脚本,然后加载到All_HTMLTest.py中去。

  • 相关阅读:
    JS、LUA都可以开发移动应用
    正在融资中的快速移动应用开发平台
    赶快加入快速移动应用开发吧
    重新诠释移动应用开发
    快速开发移动应用的利器
    报表实施案例:某市利用大数据助力精准扶贫项目开展
    【新手速成】菜鸟如何在三天内完成系统开发
    全新Wijmo5中文学习指南正式上线
    SpreadJS 在 Angular2 中支持绑定哪些属性?
    【报表福利大放送】100余套报表模板免费下
  • 原文地址:https://www.cnblogs.com/hanzhao1987/p/5993068.html
Copyright © 2011-2022 走看看