自动化测试架构设计必会知识点——对核心业务进行封装复用(附Java源码)

f0ee9905a1974571b8856eee59e658b3.png

随着UI自动化测试工具可选性越来越多,工具也越来越稳定,前几年关于自动化测试架构设计的概念逐渐淡化,但是做自动化测试最重要的两点—— PO设计模式和核心业务的封装复用大家还是必须掌握的,前面的文章我已经介绍了什么是PO设计模式,链接如下:

无论您用selenium、appium还是playwright都必须使用PO设计模式-CSDN博客

今天我们就来讲讲什么是核心业务的封装复用。

核心业务的封装复用

相信写过自动化测试的同学都编写过登录的脚本,我们来回忆一下大概的登录流程:

1.访问登录地址

2.输入用户名(手机号码)

3.输入密码(短信验证码)

4.输入校验码(有的系统有,有的系统没有)

5.点击登录按钮

在这个场景中不同的用户,使用的登录地址(一般不会变化)、用户名和密码这些数据是变化的,但是点击,输入这些动作不会变化。我们就可以把登录这个业务封装成方法,便于大家复用!实现的java伪代码如下,这是java多态重载的用法。

 public static void login(String p_url,String p_user,String p_pwd) {driver =new ChromeDriver();driver.get(p_url);driver.manage().window().maximize();driver.findElement(By.id("")).sendKeys(p_user);driver.findElement(By.id("")).sendKeys(p_pwd);driver.findElement(By.id("login_button")).click();}public static void login(String p_url,String p_user,String p_pwd,String p_captcha) {driver =new ChromeDriver();driver.get(p_url);driver.manage().window().maximize();driver.findElement(By.id("")).sendKeys(p_user);driver.findElement(By.id("")).sendKeys(p_pwd);driver.findElement(By.id("")).sendKeys(p_captcha);driver.findElement(By.id("login_button")).click();}

备注:如果有第四步需要研发给万能校验码,否则如果通过图像识别破译了校验码,那这就是个bug!

大家想一想封装业务代码进行复用最重要的是什么呢?重要的事情说三遍!

很显然就是业务中把可变数据进行参数抽取!!!

很显然就是业务中把可变数据进行参数抽取!!!

很显然就是业务中把可变数据进行参数抽取!!!

百度业务封装

在实际工作中我们可以结合自己产品中可复用的业务进行封装,提升封装业务代码的复用度,这里以百度的搜索场景为例进行演示,正常代码如下:

        driver =new ChromeDriver();String url = "http://www.baidu.com";driver.get(url);driver.manage().window().maximize();driver.findElement(By.id("kw")).sendKeys("selenium");driver.findElement(By.id("su")).click();try {Thread.sleep(3000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}driver.quit();

我们可以把搜索业务进行封装,只需要把driver.findElement(By.id("kw")).sendKeys("selenium");

中的selenium作为参数即可,创建一个类BaiduBusinessLib 来保存封装方法,代码如下:

public class BaiduBusinessLib {public static void searchKey(WebDriver p_driver,String p_key) {p_driver.findElement(By.id("kw")).sendKeys(p_key);p_driver.findElement(By.id("su")).click();try {Thread.sleep(3000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

这里重点解释一下参数WebDriver p_driver,设计的目的就是把用例中使用的driver传入进来,否者运行代码时就会重新new 一个 driver,即重新启动一个浏览器,在新启动的浏览器中执行业务封装部分的代码,这显然会直接导致脚本执行失败!

封装后的用例代码如下:

@Testpublic void test() {driver =new ChromeDriver();String url = "http://www.baidu.com";driver.get(url);driver.manage().window().maximize();BaiduBusinessLib.searchKey(driver, "selenium");assertTrue(isElementPresent(By.partialLinkText("selenium"))); //验证有selenium 相关搜索链接	driver.quit();}private boolean isElementPresent(By by) {try {	driver.findElement(by);return true;}catch(NoSuchElementException e) {return false;}}

测试用例部分在封装了业务代码后是不是看起来简洁了很多呢?那么大家就按照这个思路结合自己的业务写写业务封装吧。

我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/240364.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 Sentry 的前端监控系统搭建(Linux)

一、前言 随着技术这几年的发展与沉淀,线上数据指标监控也变得尤为重要,研发人员和运营人员需要对线上的产品指标有所感知,同时风险也需要及时暴露,很多公司开始自建监控系统,但对于一些定制化要求不是特别高的团队&a…

网络爬虫之Ajax动态数据采集

动态数据采集 规则 有时候我们在用 requests 抓取页面的时候,得到的结果可能和在浏览器中看到的不一样,在浏览器中可以看到正常显示的页面教据,但是使用 requests 得到的结果并没有,这是因为requests 获取的都是原始的 HTML 文档…

(1)(1.9) MSP (version 4.2)

文章目录 前言 1 协议概述 2 配置 3 参数说明 前言 ArduPilot 支持 MSP 协议,可通过任何串行端口进行遥测、OSD 和传感器。这样,ArduPilot 就能将遥测数据发送到 MSP 兼容设备(如大疆护目镜),用于屏幕显示&#x…

银河麒麟v10 安装mysql 8.35

银河麒麟v10 安装mysql 8.35 1、卸载mariadb2、下载Mysql安装包3、安装Mysql 8.353.1、安装依赖包3.2、安装Mysql3.3、安装后配置 1、卸载mariadb 由于银河麒麟v10系统默认安装了mariadb 会与Mysql相冲突,因此首先需要卸载系统自带的mariadb 查看系统上默认安装的M…

MyBatis动态SQL中if,where,set,trim四种标签的使用和联系

目录 MyBatis动态SQL中if,where,set,trim四种标签的使用和联系1、先介绍trim标签以下是trim标签中涉及到的属性: 2、使用trim标签或where标签去除多余的and关键字3、使用trim标签或set标签去除多余的逗号 MyBatis动态SQL中if&…

前端常用的开发工具

前端常用的开发工具🔖 文章目录 前端常用的开发工具🔖1. Snipaste--截图工具2. ScreenToGif--gif图片录制3. Typora--Markdown编辑器4. notepad--文本代码编辑器5. uTools--多功能工具6. EV录屏--录屏软件7. Xmind--思维导图8. Apifox -- 接口调试9. Tor…

【大数据】NiFi 中的 Controller Service

NiFi 中的 Controller Service 1.Service 简介1.1 Controller Service 的配置1.1.1 SETTING 基础属性1.1.2 PROPERTIES 使用属性1.1.3 COMMENT 页签 1.2 Service 的使用范围 2.全局参数配置3.DBCPConnectionPool 的使用样例4.在 ExcuseGroovyScript 组件中使用 Service 1.Servi…

记一次 Nginx 调参的踩坑经历

最近在基于SSE(Server Sent Events)做服务端单向推送服务,本地开发时一切顺利,但是在部署到预发环境时就碰到1个很诡异的问题,这里需要简单介绍下我们的整体架构: 整体架构 可以看到所有的请求都会先到统一…

2024 年 22 款顶级免费数据恢复软件比较 [Windows 和 Mac]

适用于 Windows 和 Mac 用户的最佳数据恢复软件下载列表和比较,可快速恢复丢失的数据、已删除的文件、照片或格式化的分区数据: 数据恢复软件是一种从任何存储介质恢复丢失文件的应用程序。它可以恢复由于病毒攻击、硬盘故障或任何其他原因而意外删除或…

NIO的实战教程(简单且高效)

1. 参考 建议按顺序阅读以下三篇文章 为什么NIO被称为同步非阻塞? Java IO 与 NIO:高效的输入输出操作探究 【Java.NIO】Selector,及SelectionKey 2. 实战 我们将模拟一个简单的HTTP服务器,它将响应客户端请求并返回一个固定的…

Maven核心概念

1 Maven工程的GAVP Maven 中的 GAVP 是指 GroupId、ArtifactId、Version、Packaging 等四个属性的缩写,其中前三个是必要的,而 Packaging 属性为可选项。 这四个属性主要为每个项目在maven仓库中做一个标识,方便项目之间相互引用。 GAV G 即…

桶装水送水小程序:提升服务质量的利器

随着移动互联网的发展,越来越多的消费者通过手机在线购物和订购商品。如果你是一名桶装水供应商,想要拓展线上业务,那么开发一个桶装水微信小程序将是一个明智的选择。本文将指导你从零开始开发一个桶装水微信小程序,让你轻松完成…

Coze在手,GPTsDALLE免费用

1. 关于Coze Coze 是一个应用程序编辑平台,旨在开发下一代人工智能聊天机器人。 你可以使用无代码创建各种类型的聊天机器人,并将其部署到各种社交平台和消息应用程序。 链接: Coze 2. Coze的特点 Coze有5个特点。下面由我来详细介绍一下!…

高级数据结构 <二叉搜索树>

本文已收录至《数据结构(C/C语言)》专栏! 作者:ARMCSKGT 目录 前言正文二叉搜索树的概念二叉搜索树的基本功能实现二叉搜索树的基本框架插入节点删除节点查找函数中序遍历函数析构函数和销毁函数(后序遍历销毁)拷贝构造和赋值重载(前序遍历创建)其他函数…

蓝牙物联网与嵌入式开发如何结合?

蓝牙物联网与嵌入式开发可以紧密结合,以实现更高效、更智能的物联网应用。以下是一些结合的方式: 嵌入式开发为蓝牙设备提供硬件基础设施和控制逻辑:嵌入式系统可以利用微处理器和各种外设组成的系统,为蓝牙设备提供硬件基础设施和…

基于ERC20代币协议实现的去中心化应用平台

文章目录 内容简介设计逻辑ERC20TokenLoanPlatform 合约事件结构体状态变量函数 Remix 运行实现部署相关智能合约存款和取款贷款和还款 源码地址 内容简介 使用 solidity 实现的基于 ERC20 代币协议的借贷款去中心化应用平台(极简版)。实现存款、取款、贷款、还款以及利息计算的…

爬虫API|批量抓取电商平台商品数据,支持高并发

随着互联网的快速发展,电商平台如雨后春笋般涌现,为消费者提供了丰富的购物选择。然而,对于许多商家和数据分析师来说,如何快速、准确地获取电商平台上的商品数据成为了一个难题。为了解决这个问题,我们开发了一个爬虫…

ModuleNotFoundError: No module named ‘tensorflow‘

直接运行pip install tensorflow安装成功之后,发现版本是tensorflow2.15.0 python的版本是3.9版本 导入包:import tensorflow 打包xxx.exe,调用之后提示错误 ModuleNotFoundError: No module named tensorflow 最后发现特定的python的版本对应特定的t…

基础数据结构(2):栈

1.栈的定义 栈是仅限在表尾进行插入和删除的线性表,栈又被称为后进先出的线性表 1.1栈顶和栈底 栈是一个线性表,我们允许插入和删除的一端称为栈顶 栈底和栈顶相对,实际上栈底的元素不需要关心 1.2入栈和出栈 栈元素的插入操作叫做入栈&…

润和软件HopeStage与亚信安全云主机深度安全防护系统完成产品兼容性互认证

近日,江苏润和软件股份有限公司(以下简称“润和软件”)HopeStage 操作系统与亚信科技(成都)有限公司(以下简称“亚信安全”)云主机深度安全防护系统完成兼容性测试。 测试结果表明,企…