基础展示型网站和cms,做网站的工作,卖代码建设网站,新作的网站怎么做百度推送一、什么是PO模式
全称#xff1a;page object model 简称#xff1a;POM/PO
PO模式最核心的思想是分层#xff0c;实现松耦合#xff01;实现脚本重复使用#xff0c;实现脚本易维护性#xff01; 主要分三层#xff1a;
1.基础层BasePage#xff1a;封装一些最基…
一、什么是PO模式
全称page object model 简称POM/PO
PO模式最核心的思想是分层实现松耦合实现脚本重复使用实现脚本易维护性 主要分三层
1.基础层BasePage封装一些最基础的selenium的原生的api方法元素定位框架跳转等。
2.PO层元素定位、获得元素对象页面动作
3.测试用例层业务逻辑数据驱动
三者的关系PO层继承继承层测试用例层调用PO层
二、什么是自动化测试框架 说到自动化框架我相信很多人应该都听过这个词但是不知其到底是个什么东西为什么要用自动化框架。有很多人堆自动化框架都是懵懵懂懂就跟谈恋爱一样朦胧美
一个好的自动化测试框架是可以让不那么懂技术的人也可以写自动化测试脚本的
一个好的自动化测试框架可以减少自动化测试中脚本管理和维护当中的人力物力和财力。
其实自动化框架的一个最大的意义在于可重用性。因为在框架里你可以实现很多的通用功能来简化整个脚本的开发过程。并且生成美观的测试报告。
三、非PO模式和PO模式优缺点对比 非PO模式PO模式面向过程的线性脚本POM把页面元素定位和业务操作流程分开。实现松耦合。复用性差UI元素的改变不需要修改业务逻辑代码。只需要找到对应的PO页修改定位即可数据代码分离维护性差PO能使我们的测试代码提高代码的可读性高复用性可维护性。
四、如何从0到1搭建PO模型 非PO模式举个栗子有如下百度搜索脚本 import unittest
from selenium import webdriver
from selenium.webdriver.common.by import Byclass Test(unittest.TestCase):def test01(self):# 打开浏览器driver webdriver.Chrome()# 加载百度首页driver.get(http://www.baidu.com)# 在百度搜索栏中输入软件测试driver.find_element(By.ID, kw).send_keys(软件测试)# 点击百度一下按钮driver.find_element(By.ID, su).click()def test02(self):# 打开浏览器driver webdriver.Chrome()# 加载百度首页driver.get(http://www.baidu.com)# 在百度搜索栏中输入软件测试driver.find_element(By.ID, kw).send_keys(硬件测试)# 点击百度一下按钮driver.find_element(By.ID, su).click()如何把上述栗子改成PO模式呢
1、基础层BasePage from selenium import webdriverclass BasePage:#构造方法def __init__(self):# 打开浏览器self.driver webdriver.Chrome() # AltEnter# 加载百度首页self.driver.get(http://www.baidu.com)#封装定位元素def find_ele(self,*args):ele self.driver.find_element(*args)return ele 2、PO层封装百度页面元素定位元素对象以及页面操作 from selenium.webdriver.common.by import By
from base.base_page import BasePageclass BaiduPage(BasePage):#元素定位baidu_text_loc (By.ID, kw)baidu_submit_loc (By.ID, su)#获得元素对象def get_text_obj(self):ele self.find_ele(*BaiduPage.baidu_text_loc)return eledef get_submit_obj(self):ele self.find_ele(*BaiduPage.baidu_submit_loc)return ele#页面操作def search(self,search_string):self.get_text_obj().send_keys(search_string)self.get_submit_obj().click() 3、测试用例层业务逻辑和数据驱动 from ddt import ddt, data
from po.baidu_page import BaiduPageddt
class BaiduTest(unittest.TestCase): data(软件测试,硬件测试)def test01(self,seaString):BaiduPage().search(seaString)time.sleep(5)if __name__ __main__:unittest.main() 从上面的PO案例让我们更加了解清晰PO的优点在于
1.POM把页面元素定位和业务操作流程分开。实现松耦合。 2.UI元素的改变不需要修改业务逻辑代码。只需要找到对应的PO页修改定位即可数据代码分离 3.PO能使我们的测试代码提高代码的可读性高复用性可维护性。
五、自动化测试框架和PO的关系
自动化框架po各种封装日志处理封装全局配置文件的封装数据库连接的封装excel操作封装数据驱动封装等
其实想要胜任UI自动化测试岗位还需要掌握以下内容
1.python或java
2.selenium的API
3.unittest/pytest单元测试框架
4.htmltestrunner/allure测试报告
5.数据驱动dtt(excel,yaml,mysql)或pytest中的fixtrue
6.关键字驱动公共类方法封装随机数数据库连接全局登录
7.全局配置文件处理
8.日志处理
9.断言
10.第三方库
11.git和github或码云集成开发
12.jenkins持续集成
这些内容在我的CSDN博客当中基本都有涉猎大家需要什么就去搜索什么吧 【整整200集】超超超详细的Python接口自动化测试进阶教程真实模拟企业项目实战