梳理下搭建web自動化框架的流程:
創建目錄:
cases:存放測試用例,unittest框架要求用例名必須以test開頭,所以命名test_case.py
test_case.py代碼如下:繼承unittest.TestCase類下面的方法setupclass(),teardownclass()。然后把用例放進去。每個頁面作為一個用例
'''這里寫業務的用例 用例要用到page unittest''' from page.basePage import Page import unittest class UiTester(unittest.TestCase):#繼承unittest.TestCase類下面的方法setup(),teardown() # def setUp(self):#每條測試用例執行之前,先執行它 # pass # def tearDown(self):#每條測試用例執行之后,執行它 # pass @classmethod def setUpClass(cls):#類里面的函數執行之前,最先執行它(所有用例執行之前,執行一次) cls.page=Page()#實例化,打開瀏覽器 cls.page.open()#打開url網頁 def test_a_login(self):#這是case,每個頁面里的功能點,用例與數據源分離,方便維護 self.page.send_username() self.page.send_passwd() self.page.login() self.assertTrue(self.page.check_login()) def test_b_creatbug(self): self.page.clickbug() # 進入到bug頁面 self.page.mentionbug() # 點擊提bug按鈕,進入到提bug頁面 self.page.selectmodule() # 選擇所屬模塊 self.page.bugtype() # 選擇bug類型 self.page.os() # 選擇操作系統 self.page.browser() # 選擇瀏覽器 self.page.version() # 選擇影響版本 self.page.assignto() # 選擇分配人 self.page.deadline() # 選擇截止日期 self.page.bugtitle() # bug標題 self.page.context() # bug步驟 self.page.mailto() # 超送人 self.page.file() self.page.save() self.assertTrue(self.page.check_creatbug()) @classmethod def tearDownClass(cls):#類里面的所有測試用例執行之后,最后執行它(所有用例執行之后,執行一次) cls.page.quit()
lib目錄:
pyse.py文件主要存放操作元素的方法比如:click(),send_keys(),double_click(),drag_and_drop()等等
page目錄:basepage.py,根據PO思想,將每個頁面作為一個類,每個頁面的功能點作為這個類的一個函數。將所有頁面寫出來
在用例文件test_case.py中調用上面的函數,每個頁面作為一個用例,調用每個頁面的函數
bin:start.py寫運行用例的流程:
創建測試集合,找到測試用例,將每個測試用例加到測試集合中,運行用例,產生報告。
from lib.logger import logger from lib.path import WEBCASEPATH,REPORTPATH from lib.HTMLTestRunner import HTMLTestRunner import unittest from lib.tool import Tool class Main(object): def run(self): Tool().clear_picture() suite = unittest.TestSuite() cases = unittest.defaultTestLoader.discover(WEBCASEPATH) print(cases) for case in cases: print(case) suite.addTest(case) f = open(REPORTPATH,'wb')#打開一個報告文件 runner = HTMLTestRunner(f,verbosity=1,title=u'測試報告', description=u'用例執行情況:') runner.run(suite) f.flush() f.close()