应用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中去。

posted @ 2016-10-24 15:09  明镜止水丨  阅读(5482)  评论(0编辑  收藏  举报