Selenium PO模式
- PO模式(POM)
- Page Object Model
- Page
- Page_base
- 封装所有页面公用的方法
- driver
- find_element
- click
- send_keys
- clear
- switch_to.frame
- get_current_url
- quit(close方法是关闭当前窗口,quit关闭浏览器)
- 封装所有页面公用的方法
- Login_page
- 封装登陆页面公用的方法
- 继承Page_base父类
- 将获取元素方式,以及元素对应属性值存储为元组
- Page_base
- Common
- data
- 获取文件内数据
- import csv
- fl = open(fl_name)
- content = csv.reader(fl)
- data_list = [i for i in content]
- 获取登录数据
- data = self.get_data(‘./Data/login.csv’)
- login_list = [i[2:] for i in data[1:]]
- 获取文件内数据
- log
- 测试日志
- 创建日志
- import os
- from time import strftime
- fl_path = ‘./Log/report_%s’ % strftime(‘%Y%m%d%H%M%S’)
- os.mkdir(fl_path)
- Log.fl_path = fl_path
- 错误截图
- err_img_path = ‘%s/%s’ % (Log.fl_path, name_)
- driver.get_screenshot_as_file(err_img_path)
- 创建日志
- 测试日志
- data
- Data
- 存放csv文件
- Log
- 存放日志
- Testcase
- 封装测试用例
- class LoginTestCase(unittest.TestCase):
- def SetUp(self):
- def tearDown(self):
- def testcase001(self):
- ”’ 注释 ”’
- class LoginTestCase(unittest.TestCase):
- import unittest
- from time import strftime
- from time import sleep
- from Page.report_manage import ReportManage
- from Page.login_page import LoginPage
- from Common.data import Data
- from Common.log import Log
- if __name__ == ‘__main__’: #如果该py文件作为执行文件时
- unittest.main() #被引用时,会在引用的那个文件中执行
- 封装测试用例
- run.py
- import unittest
- from HTMLTestRunner import HTMLTestRunner
- from Common.log import Log
- log_object = Log()
- log_object.create_report()
- fl_name = ‘%s/report.html’ % Log.fl_path #日志文件名
- suite = unittest.defaultTestLoader.discover(‘./Testcase’, pattern=’test*.py’)
- fl = open(fl_name, mode = ‘wb’)
- runner = HTMLTestRunner(stream=fl, title=’Agileone Test’)
- runner.run(suite)
- fl.close()
- 其他
- import unittest
- from unitest_test1 import AddTestCase
- from unitest_test2 import MultiTestCase
- from HTMLTestRunner import HTMLTestRunner
- ”’
- #适合冒烟测试
- suite = unittest.TestSuite()
- suite.addTest(AddTestCase(‘test001’))
- suite.addTest(AddTestCase(‘test002’))
- suite.addTest(MultiTestCase(‘test001’))
- suite.addTest(MultiTestCase(‘test002’))
- #可以更改执行顺序,调整优先级
- ”’
- f1 = open(‘./result.html’, mode = ‘wb’)
- #构建测试集
- #适合整个用例执行
- suite = unittest.defaultTestLoader.discover(‘./’, pattern=’unitest_test*.py’)
- #runner = unittest.TextTestRunner() #unittest自带运行器
- runner = HTMLTestRunner(stream = f1, title = ‘Report’, description = ”)
- runner.run(suite)
- f1.close()
- ”’
- unittest.TestSuite()
- ”’
- 自动化测试
- 自动化测试优点:
- 1. 对程序的回归测试更方便,提升回归效率,节约人力。
- 2. 可以执行一些手工测试困难或不可能进行的测试。
- 3. 更好地利用资源。将繁琐的任务自动化,可以提高准确性和测试人员的积极性,将测试技术人员解脱出来投入更多精力设计更好的测试用例
- 4. 测试具有可重复性。
- 5. 增加软件信任度,由于测试是自动执行的,所以不存在执行过程中的疏忽和错误,完全取决于测试的设计质量。
- 自动化测试缺点:
- 1. 不能取代手工测试,工具本身并无想像力。
- 2. 对自动化测试人员要求较高。
- 3. 对被测试系统质量的依赖性极大,维护成本高。
- 4. 测试脚本本身也可能存在缺陷。
- 5. 测试自动化可能会制约软件开发。由于自动测试比手动测试更脆弱,所以维护会受到限制,从而制约软件的开发。
- 适合自动化测试的产品:
- 1. 软件需求变动不频繁。
- 2. 项目周期长,规划性强。
- 3. 回归测试任务重。
- 4. 项目进度压力不大。
- 自动化测试优点:
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223908.html原文链接:https://javaforall.net
