PO模型(轉)
阿新 • • 發佈:2020-08-16
PO是什麼
1、PO提供了一種業務流程與頁面元素操作分離的模式,這使得測試程式碼變得更加清晰。 2、頁面物件與用例分離,使得我們更好的複用物件。 3、可複用的頁面方法程式碼會變得更加優化 4、更加有效的命名方式使得我們更加清晰的知道方法所操作的UI元素。例如我們要回到首頁, 方法命名為:gotoHomePage(),通過方法名即可清晰的知道具體的功能實現。 生成測試報告
Page Object(PO):頁面物件模式來解決,po能讓我們的測試程式碼變得可讀性更好,可維護性高,複用性高
1、頁面物件模型(PO)是一種設計模式,用來管理維護一組web元素的物件庫 2、在PO下,應用程式的每一個頁面都有一個對應的page class 3、每一個page class維護著該web頁的元素集和操作這些元素的方法 4、page class中的方法命名最好根據對應的業務場景進行,例如通常登入後我們需要等待幾秒鐘, 我們可以這樣命名該方法:waitingForLoginSuccess()。 PO的優勢1、PO提供了一種業務流程與頁面元素操作分離的模式,這使得測試程式碼變得更加清晰。 2、頁面物件與用例分離,使得我們更好的複用物件。 3、可複用的頁面方法程式碼會變得更加優化 4、更加有效的命名方式使得我們更加清晰的知道方法所操作的UI元素。例如我們要回到首頁, 方法命名為:gotoHomePage(),通過方法名即可清晰的知道具體的功能實現。 生成測試報告
fromHTMLTestRunnerlog.user_log import UserLog import HTMLTestRunner import unittest import os if __name__ == '__main__': file_path = os.path.join(os.getcwd()+"/report/"+"first_case.html") f = open(file_path,'wb') suite = unittest.TestSuite() suite.addTest(FirstCase('test_login_success')) #suite.addTest(FirstCase('test_login_code_error'))suite.addTest(FirstCase('test_login_email_error')) suite.addTest(FirstCase('test_login_username_error')) #unittest.TextTestRunner().run(suite) #suite = unittest.TestLoader().loadTestsFromTestCase(FirstCase) runner = HTMLTestRunner.HTMLTestRunner(stream=f,title="This is first123 report",description=u"這個是我們第一次測試報告",verbosity=2) runner.run(suite)
生成日誌
import logging #檔名字 base_dir = os.path.dirname(os.path.abspath(__file__)) log_dir = os.path.join(base_dir,"logs") log_file = datetime.datetime.now().strftime("%Y-%m-%d")+".log" log_name = log_dir+"/"+log_file print(log_name) #檔案輸出日誌 self.file_handle = logging.FileHandler(log_name,'a',encoding='utf-8') self.file_handle.setLevel(logging.INFO) formatter = logging.Formatter('%(asctime)s %(filename)s--> %(funcName)s %(levelno)s: %(levelname)s ----->%(message)s') self.file_handle.setFormatter(formatter) self.logger1.addHandler(self.file_handle)log