PO模型(转)
PO是什么
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(),通过方法名即可清晰的知道具体的功能实现。
生成测试报告
HTMLTestRunner
log
from log.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)
浙公网安备 33010602011771号