測試包含測試用例設計,測試執行,測試報告輸出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》