一文带你上手自动化测试中的PO模式!

news/2024/9/18 18:52:22/ 标签: 压力测试, 面试, 软件测试, 功能测试

自动化测试软件测试项目团队中发挥着重要的作用,同时合理地开展自动化测试,可以有效降低错误修复成本,提高工作效率。

下面就以web自动化测试为例来说明POM模式:python+Selenium+pytest框架下,完成自动化测试用例的编写,管理,运行和出报告,似乎是一项非常简单的工作过程,随在项目进展,特别是迭代频繁的敏捷项目研发方式下,有些自动化测试人员实现的那些低质量测试脚本往往会引发后期高昂的代码维护成本,随着时间的推移所谓的自动化测试变得好像忘了初衷了。

POM模式中解决测试脚本质量低下的一种很实用的方法。下面我来向大家介绍一下POM分离模式的思维:

pom分离:

POM分离 page- object-module--是一种思维。

采用POM目的:为了解决前端中UI变化频繁,从而造成测试自动化脚本维护的成本越来越大。

POM思路:把页面元素和业务逻辑和测试脚本分离开到两个不同的类文件。class A只写页面元素定位,和业务逻辑代码操作的封装,class B只写测试脚本。

POM主要有以下优点:

  1.把web ui对象仓库从测试脚本分离,业务代码和测试脚本分离。

  2.每一个页面对应一个页面类,页面的元素写到这个页面类中。

  3.页面类主要包括该页面的元素定位,和和这些元素相关的业务操作代码封装的方法。

  4.代码复用,从而减少测试脚本代码量。

  5.层次清晰,同时支持多个编写自动化脚本开发,例如每个人写哪几个页面,不影响他人。

  6.建议页面类和业务逻辑方法都给一个有意义的名称,方便他人快速编写脚本和维护脚本。

实例如下:

1.测试脚本

2.业务逻辑

3.界面元素

4.再次封装

5.使用最新封装内容

都说良好的开端是成功的一半,自动化测试框架的落地也是如此,在测试框架实现之前,我们需要全方位考滤后才能设计出面对避无可避的UI元素变更的好的框架。有时候我们第一个想到的是如何将那些变更频率不高的功能模块实现自动化,而对那些变更频率高的功能模块有什么方式能够降低我们未来对于代码调整带来的高昂成本呢?要做到“子落而满盘活”,而不是“牵一发而动全身”。我们是否能对变更进行限制,只动一个地方,并且让每个与之相关的测试脚本都能使用它?答案一定是完全一致肯定的-------POM模式可以帮我们实现。

如果该web页面元素发生了变化,我们只需要在其对应的类文件中进行修改就可以了,而不必在多个不同的脚本去搜索查找并一一更新。这种方法就是页面对象模型(POM),它有助于提高代码的可读性、可维护性和可重用性。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

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

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。


http://www.ppmy.cn/news/1519623.html

相关文章

【Qt】Qt系统 | Qt文件

文章目录 一. 输入输出设备类二. 文件读写类三. 文件和目录信息 文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库,提供了跨平台的文件操作能力,封装了很多关于文件的类,通过这些类能够对文件系统进行操作,如文件读写、文…

基于Django的MySQL项目建设计划

构建一个基于 Django 和 MySQL 的项目需要经过多个阶段的规划和实施。以下是一个详细的建设计划,分为项目准备、开发、测试和部署等几个关键阶段。 1、问题背景 为了完成大学的 “问答网站” 项目,需要在几天内完成项目的计划,并于下周二准备…

MAC安装miniconda提示“文本编码Unicode(UTF-8)不适用”解决方案

需求背景 客户需要在mac环境下安装miniconda,提示安装失败,主要原因是安装版本不对,在选择合适版本,配置好环境后问题得以解决! 报错提示 版本和环境错误 前往地址下载正确版本 https://repo.anaconda.com/miniconda…

基于RK3568平台opencv的图像采集、ffmpeg推流和Windows端拉流(多线程)

目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、移植流程3.1 编写测试3.2 验证功能一、概述 本章节是针对ffmpeg移植到 Linux系统,运行在RK3568开发板上,首先创建一个线程opencv通过摄像头采集视频图像,接着再创建两个线程,其中一个线程获取采集的视频图像送给ffm…

去中心化身份验证:Web3时代数字身份的革新

随着Web3时代的到来,去中心化技术正在重新定义数字身份验证的方式。传统的身份验证方法常常依赖于中心化的数据库和中介机构,这些系统不仅易受攻击,还可能侵犯用户的隐私。而去中心化身份验证(DID, Decentralized Identifier&…

Pycharm的终端(Terminal)中切换到当前项目所在的虚拟环境

如果想更近一步,如果想让Pycharm默认显示项目所在虚拟环境,而不是系统基本环境,可以在设置里面更改,点击设置即可进入修改页面,也可以通过文件/File-设置/setting/-工具/Tools-终端/Terminal

乾元通渠道商中标湖南省煤业集团公司安全生产预防和应急救援能力建设装备配备采购项目

近日,乾元通渠道商中标湖南省煤业集团安全生产预防和应急救援能力建设装备配备采购项目,乾元通作为聚合通讯保障技术厂家,为项目一标段卫星通讯指挥车提供车载聚合路由器终端及系统。 乾元通经过多年发展,逐步建起车载系列多链路聚…

在Ubuntu/Linux下重温FC游戏——超级玛丽奥

文章目录 在Ubuntu/Linux下重温FC游戏——超级玛丽奥1 概述2 安装 FCEUX 模拟器3 下载 FC ROMS4 重温时光 在Ubuntu/Linux下重温FC游戏——超级玛丽奥 1 概述 FC 游戏机,是任天堂生产、发行和销售的 8 位第三世代家用游戏机,日本版官方名称为家庭电脑&…

爬虫技术抓取网站数据被限制怎么处理

爬虫技术用于抓取网站数据时,可能会遇到一些限制,常见的包括反爬机制、速率限制、IP封禁等。以下是应对这些情况的一些策略: 尊重robots.txt:每个网站都有robots.txt文件,遵循其中的规定可以避免触犯网站的抓取规则。 …

vscode go开发环境

go 安装go(1.19) 配置环境变量 vscode 安装vscode(VSCode-win32-x64-1.92.2) 安装go扩展 更新go工具 CtrlShiftP打开命令面板; 搜索 Go: Install/Update tools,选择所有可用的…

Artfi将蓝筹艺术投资引入Sui

Asif Kamal希望每个人都能拥有一幅毕加索的作品,或者至少拥有其中的一部分。 全球艺术市场每年销售额达650亿至700亿美元,主要通过包括苏富比、佳士得和邦瀚斯在内的六大主要机构流通。投资蓝筹艺术品可能非常有利可图。然而,对于普通人来说…

Linux文件共享

FTP tcp协议的传输文件标准,安装方法yum install -y vsftpd,使用systemctl start vsftpd开启服务,使用setenforce 0和systemctl stop firewalld关闭SELinux和防火墙,避免对ftp协议的干扰。 客户端使用yum -y install ftp安装ftp…

c语言赋值截断

目录 截断含义 截断举例 截断含义 在C语言中,将一个较宽范围的整型(如16位的short或int16_t)赋值给一个较窄范围的整型(如8位的char或int8_t)时,如果原值超出了目标类型的表示范围,就会发生所…

一种动态防御策略——移动目标防御(MTD)

文章速览: 1、高级规避攻击 2、用移动目标防御对抗欺骗 常见做法操作系统和应用程序才是真正的战场打破游戏规则 网络攻击的技术变得愈发难测,网络攻击者用多态性、混淆、加密和自我修改乔装他们的恶意软件,以此逃避防御性的检测,…

把http网站变成https

网站建设好后默认是HTTP网站,会被浏览器直接标注为不安全站点,甚至搜索引擎上也排名也不是那么出色。 HTTP协议是浏览网站和在线资源的基本协议。由于HTTP的连接未加密,因此往往不安全。HTTPS是默认HTTP协议的安全扩展。 访问HTTPS网站时&…

MyBatis关联查询的方式

文章目录 一对一关联查询XML方式注解方式 一对多关联查询XML方式注解方式 多对多关联查询XML方式注解方式 注意事项 MyBatis是一个优秀的持久层框架,它支持复杂的SQL查询、映射以及高级映射。在处理关联查询时,MyBatis提供了强大的支持,无论是…

【 html+css 绚丽Loading 】 000031 三元轮回盘

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 &#x1f495…

东南大学研究生-数值分析上机题(2023)Python 4 多项式插值与函数最佳逼近

3次样条插值函数 4.1 题目 (1) 编写求第一型3次样条插值函数的通用程序; (2) 已知汽车门曲线型值点的数据如下: i012345678910xi012345678910yi2.513.304.044.705.225.545.785.405.575.75.80 端点条件为 y 0 ′ 0.8 y_00.8 y0′​0.8, y…

开源项目FaceFusion-AI换脸

FaceFusion简介 FaceFusion是一个开源的AI换脸和增强工具,支持图像和视频处理。它采用最新的深度学习技术,提供了一系列强大的功能,包括人脸替换、人脸增强、唇形同步等。FaceFusion的目标是为用户提供一个易用、高效且功能丰富的AI换脸解决…

LabVIEW中10μs方波生成问题

在LabVIEW中使用NI PCIe-6353卡生成并控制10μs级别的方波输出可能遇到频率调整的问题。下面将详细分析常见问题的原因,如采样率设置、时钟源配置、波形生成方式等,并提供具体的解决方案,帮助用户成功生成并调整高精度方波信号。 为了在LabVI…