selenium webdriver (13) -- 結合pyunit生成測試報告

測試包含測試用例設計,測試執行,測試報告輸出html

測試用例設計通常是靜態的,以文檔的方式進行存儲python

測試執行,能夠是手動的,也能夠自動化用例執行web

測試報告,能夠是手動的,按照必定格式的測試報告,也能夠是自動化生成的,其目的是看清哪些用例測試成功,哪些用例測試失敗函數

這邊以一個小的測試爲例來講明,自動化測試如何從頭至尾的進行工具

測試目錄如圖測試

test_project/
.............report/                          測試報告
.............test_case/                       測試用例
.............runtest.py                       測試執行

首先設計兩個用例,測試百度搜索頁以及有道翻譯頁ui

test_baidu.py編碼

#coding:utf-8

import sys                                                 #編碼問題
reload(sys)
sys.setdefaultencoding('utf8')

from selenium import webdriver
import unittest
import time

class MyTest(unittest.TestCase):                           #測試用unittest測試工具
    
    def setUp(self):
        self.driver = webdriver.Firefox()        
        self.driver.maximize_window()        
        self.driver.implicitly_wait(10)        
        self.base_url = "http://www.baidu.com"        
        
    def test_baidu(self):
        driver = self.driver
        driver.get(self.base_url+'/')        
        driver.find_element_by_id("kw").clear()        
        driver.find_element_by_id("kw").send_keys("unittest")        
        driver.find_element_by_id("su").click()        
        time.sleep(2)        
        title = driver.title
        self.assertEqual(title, "unittest_百度搜索")        #檢查點是跳轉頁面標題     
        
    def tearDown(self):
        self.driver.close()        
        
if __name__ == '__main__':                                #該文件以模塊方式存在,若是直接執行該文件,則文件名爲'__main__',執行main函數
    unittest.main()

test_youdao.pyurl

#coding:utf-8

import sys
reload(sys)
sys.setdefaultencoding('utf8')

from selenium import webdriver
import unittest
import time

class MyTest(unittest.TestCase):
    
    def setUp(self):
        self.driver = webdriver.Firefox()        
        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_id("translateContent").clear()
        driver.find_element_by_id("translateContent").send_keys("webdriver")        
        driver.find_element_by_id("translateContent").submit()
        time.sleep(2)        
        title = driver.title
        print title
        self.assertEqual(title, "【webdriver】什麼意思_英語webdriver的翻譯_音標_讀音_用法_例句_在線翻譯_有道詞典")        
        #檢查點是跳轉的頁面標題 
    def tearDown(self):
        self.driver.close()        
        
if __name__ == '__main__':
    unittest.main()

run_test.pyspa

import unittest
import test_case.test_baidu
import test_case.test_youdao
from HTMLTestRunner import HTMLTestRunner          #首先下載一個HTMLTestRunner.py放到sys.path中,能夠進行導入用HTMLTestRunner產生一個HTML的測試報告
import time

#suite = unittest.TestSuite()
#
#suite.addTest(test_baidu.MyTest('test_baidu'))
#suite.addTest(test_youdao.MyTest('test_youdao'))
test_dir = './test_case'                           #測試用例存放路徑以當前目錄進行尋找

#當用例不少,而且放在不少文件中,此時若是仍是用suite一個一個加用例到suite中再執行就會顯得很麻煩,
#discover也是一個自動化過程,在一個路徑下,自動匹配test*.py的文件做爲測試用例
discover = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')


if __name__ == '__main__':
    
#    runner = unittest.TextTestRunner()    
#    runner.run(suite)
    now = time.strftime("%Y-%m-%d %H_%M_%S")         #產生當前時間,以’年-月-日 小時_分鐘_秒‘的格式
    filename = './report/' + now + 'result.html'     #產生文件名包括路徑,這樣每次產生的文件不重名   
    fp = open(filename, 'wb')                        #以寫的方式打開文件
    runner = HTMLTestRunner(stream=fp,               #HTMLTestRunner生成實例 
                            title='百度搜索測試報告',
                            description='用例執行狀況:')                                                        
    runner.run(discover)                             #跑discover中的全部用例

參考:

Selenium2自動化測試實戰》

selenium python buildings release 2

相關文章
相關標籤/搜索