po是什么?自动化测试po分层如何实现?-带po详细源代码

一、什么是PO设计模式?

PO(PageObject)设计模式将某个页面的所有元素对象定位和对元素对象的操作封装成一个 Page 类,即一个py文件,并以页面为单位来写测试用例,实现页面对象和测试用例的分离,若元素发生变化,只需要进入对应的Page类,更新元素定位即可,不用修改用例。

二、在什么样的场景下使用PO设计模式?(where)

随着时间的推移,需要维护的页面越来越多时,如果使用传统的设计模式把测不同页面上的所有步骤写在同一个模块里面,会显得笨重。如果页面发生了改变,对应的脚本也要发生改变,难以维护就可以体现出来了,所以使用的PO设计模式会方便很多。

三、PO模式的六大原则

(1)一个 public 方法代表一个公共的服务。就是说一个方法代替页面上的某个操作(公共方法表示页面提供的服务)

(2)PageObject 中的方法细节不可暴露在外,通过提供公共服务接口的形式提供给外部(不要暴露页面的细节)

(3)一般不需要在 PageObject 中断言(Page设计中不要出现断言,应该写在测试用例类中)

(4)当有页面跳转的操作时候,执行这个方法时应该在方法结束返回时能够跳转到另一个页面中(方法应该返回其他的Page对象)

(5)我们只需要对页面中我们需要的重要的内容进行封装(不要去代表整个page,如果一个页面中有很多功能,只需要对重点功能封装方法即可)

(6)页面中相同的组件,但是不同的操作应该要被拆成不同的方法进行封装(不同的结果返回不同的方法,不同的模式)

四、PO 模式可以把一个页面分为二个层级:对象操作层、业务层。

(1)对象操作层:封装定位元素,封装对元素的操作。

(2)业务层:将一个或多个操作组合起来完成一个业务功能。

五、什么是自动化测试框架

说到自动化框架,我相信很多人应该都听过这个词,但是不知其到底是个什么东西,为什么要用自动化框架。有很多人堆自动化框架都是懵懵懂懂,就跟谈恋爱一样,朦胧美!

一个好的自动化测试框架是可以让不那么懂技术的人也可以写自动化测试脚本的,

一个好的自动化测试框架可以减少自动化测试中脚本管理和维护当中的人力物力和财力。

其实自动化框架的一个最大的意义在于可重用性。因为在框架里,你可以实现很多的通用功能来简化整个脚本的开发过程。并且生成美观的测试报告。

六、非PO模式和PO模式优缺点对比

Python全栈自动化测试全套视频资料免费领取,保证是你没有的资料
非PO模式PO模式
面向过程的线性脚本POM把页面元素定位和业务操作流程分开。实现松耦合。
复用性差        UI元素的改变不需要修改业务逻辑代码。只需要找到对应的PO页修改定位即可,数据代码分离
维护性差PO能使我们的测试代码提高代码的可读性,高复用性,可维护性。

七、如何从0到1搭建PO模型

非PO模式举个栗子:有如下百度搜索脚本:
 

import unittest
from selenium import webdriver
from selenium.webdriver.common.by import By
 
class 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 webdriver
 
class BasePage:
    #构造方法
    def __init__(self):
        # 打开浏览器
        self.driver = webdriver.Chrome()  # Alt+Enter
        # 加载百度首页
        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 BasePage
 
class 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 ele
    def 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 BaiduPage
 
@ddt
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持续集成

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述

在这里插入图片描述

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

  • 26
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个详细自动化测试PO模型: 1. 测试策略和规划:PO负责制定测试策略和规划,包括确定测试目标、测试范围、测试工具和技术、测试计划、测试用例等。 2. 测试用例设计和开发:PO负责测试用例的设计和开发,包括制定测试用例的输入数据、预期输出结果、测试步骤等。 3. 测试执行和管理:PO负责测试的执行和管理,包括测试环境的搭建、测试用例的执行、测试结果的记录和分析、缺陷的管理等。 4. 自动化测试开发:PO负责自动化测试工具和框架的开发和维护,包括编写自动化测试脚本、集成测试工具、实现自动化测试框架等。 5. 测试质量保障:PO负责测试质量的保障,包括制定测试质量标准、评估测试质量、提供测试报告和建议等。 6. 团队协作和沟通:PO负责与开发团队、测试团队、产品团队和其他相关团队进行协作和沟通,以确保测试工作的顺利进行。 7. 测试方法和技术研究:PO负责研究测试方法和技术,包括新的测试工具、测试框架、自动化测试技术等,以提高测试效率和质量。 8. 测试培训和知识分享PO负责测试培训和知识分享,包括为测试团队提供培训、分享测试经验和知识等,以提高测试团队的能力和水平。 9. 测试流程改进和优化:PO负责测试流程的改进和优化,包括分析测试流程中的问题和瓶颈、提出改进建议和方案等,以提高测试流程的效率和质量。 以上就是一个详细自动化测试PO模型,可以根据实际情况进行调整和补充。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值