知方号

知方号

自动化测试(UI)

自动化测试(UI)

前言

PO模式是一种自动化测试设计模式,将页面定位和业务操作分开,也就是把对象定位和测试脚本分开,从而提供可维护性。

一、简介

PO是Page Object(页面对象)的缩写,PO模式是自动化测试项目开发实践的最佳设计模式之一,核心思想是通过对界面元素的封装减少冗余代码,主要体现在对界面交互细节的封装,也就是在实际测试中只关注业务流程;同时在后期维护中,若元素定位发生变化, 只需要调整页面元素封装的代码,提高测试用例的可维护性、可读性。

二、PO模式的三层结构

PO模式可以把一个页面分为三层,对象库层、操作层、业务层。

(一)对象库层Base(基类):封装page 页面一些公共的方法,如初始化方法、查找元素方法、点击元素方法、输入方法、获取文本方法、截图方法等

注意:

以上方法封装时候,解包只需一此,在查找元素解包*loc; driver 为虚拟,谁调用 base 时,谁传入,无需关注从哪里来; loc:真正使用 loc 的方法只有查找元素方法使用;

(二)操作层 page(页面对象):封装对元素的操作,一个页面封装成一个对象;

思路:继承 Base; 实现: 模块名: 实际操作模块名称 如:page_login.py 页面对象类名:以大驼峰方法将模块名抄进来,有下划线去掉下划线,如class PageLogin(Base); 方法:涉及元素,将每个元素操作单独封装成一个操作方法; 组装:根据需求组装以上操作步骤。

(三)业务层 scripts(业务层):将一个或多个操作组合起来完成一个业务功能。比如登录:需要输入帐号、密码、点击登录三个操作。

思路:导包调用 page 页面 实现: 模块:test+实际操作模块名称 如:test_login.py 测试业务类名:以大驼峰方法将模块名抄进来,有下划线去掉下划线,如class TestLogin(unittest.TestCase): 方法: ① 初始化方法 setUp() 注:在 unittest 框架中不能使用 def init()初始化方法; #实例化 页面对象 #前置操作 如:打开网址等 ② 结束方法 teardown #关闭驱动 ③ 测试方法 #根据要操作的业务来实现

三、实例

为更好的理解PO模式,下面采用版本迭代的方式来学习,便于对不同版本的优缺点进行对比和理解。

(一)版本 V1:不使用任何设计模式和单元测试框架(线性模型) V2:使用UnitTest管理用例 V3:po 模式编写 V4: po模式优化 + 数据驱动

(二)案例说明 对TPshop项目的登录模块进行自动化测试,以账号不存在及密码错误为例作为测试用例。

账号不存在 点击首页的‘登录’

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。