Web自动化测试:UI自动化框架结构以及思路!

news2024/11/28 14:46:12

在学会使用unittest后,实际上UI自动化的基础骨架已经搭建起来了,剩下的就是利于这套框架,增添一些我们需要的功能,目前看来,我们已经可以使用此框架来批量运行用例,欠缺的是整体的思路以及一些其他功能细节,比如日志记录、封装webdriver、读取数据库等功能的实现。

一、框架结构

其中:

common:

一些基础的底层方法类,例如:测试报告类、数据配置读取类、日志类、封装webdriver类、数据库连接类、发送邮件类、公共方法类,只要是我们想要实现的一些功能,可以把基础方法的实现放在common文件夹。

config:

配置文件放在这里,比如:账号密码、数据库连接地址等。

log:

运行用例后,日志的存储文件夹。

report:

运行用例后,测试报告的存储文件夹。

page:

在POM设计模式下,关于具体UI页面操作的方法。

test_case:

具体存放编写的测试用例。

run_all:

用来批量运行测试用例。

二、一些设计的想法和理念

2.1数据分离

数据分离,顾名思义是指要把代码中的数据和代码分离开来,这样方便管理和维护。

在写用例以及框架时,会涉及到数据的处理,比如说:账号、密码、元素定位、测试数据等等,对于经常会用到,但是不会经常修改的数据,比如账号、密码等,可以写到配置文件里,然后再读取;而对于元素定位的话,我习惯统一放到类里,作为类的全局变量来进行维护调用,而不是写到代码逻辑中,之前尝试过把元素定位放到excel中,但是元素定位需要经常修改维护,其实放在excel里修改很不方便,所以我更习惯作为一个类变量来存储调用。

2.2 POM设计模式

POM简单来说,我的理解就是高内聚低耦合的一种实践,通过分层来使得代码更容易维护表达,同时把复用性极多的方法整合到一起统一调用。运用到UI自动化中,则是把一个UI测试用例的实现,分为了三层来实现;第一层是driver层,我们把常用的方法封装起来,比如查找元素的方法find_element()我们封装成一个定位元素的方法,然后在这个方法里加入元素等待;第二层是page层,也就是页面层,主要把一个页面中的操作写成一个方法,比如点击确定按钮,填写用户名等;第三层是case层,也就是测试用例层,通过把page中的操作像搭积木一样组合起来,实现测试流程。

封装的driver方法 ---> page:页面中的操作 ---> case调用page中的操作

2.3测试框架的完整性

就是加上一些我们需要的功能,比如测试报告、日志的打印记录、发送邮件等功能,当然不仅限于此,在基本搭建好框架后,可以对框架本身进行易用性的整改,比如我要查询数据库获取数据来入参或者断言,那就加入数据库连接的方法;比如为了项目更简单易用,可以加入UI页面的可视化功能,python本身三方库的种类很多,可以根据自己的需要或者想法来改造我们的框架。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 

软件测试面试文档

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

在这里插入图片描述

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

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

相关文章

RSA算法解析

目录 引言 网络通信的明文传输风险 HTTP的不安全性及其风险点 ​编辑HTTPS的引入 为什么需要HTTPS HTTPS与HTTP的主要区别 TLS协议概述 TLS的作用和重要性 TLS在网络层的位置 TLS握手过程 握手过程的目的和步骤 TLS握手的各个阶段 RSA算法原理 RSA算法的基本概念 …

八股文学习总结

八股文学习总结 文章目录 八股文学习总结一、总体概况二、Java基础三、集合四、JUC五、JVM六、MYSQL七、Redis八、MQ九、计网十、OS十一、附上我记的笔记 一、总体概况 八股文也看了好多天了,我对八股文基本上考察哪些点也都有了印象,主要的分为Java基础…

uni-app 开发App时调用uni-push 实现在线系统消息推送通知 保姆教程

一、引言 在开发App时避免不了需要推送系统通知,以提高用户的使用体验。在自己的一个工具型的小app上全流程接入了uni-push2.0的推送能力,做个记录,以防后期需要用到。在阅读本教程前最好先看看官方文档,结合官方文档使用&#xf…

Android自定义view

前言 在Android开发时,我们经常会碰见在很多地方会重复使用相同的布局,或者是需要显示一些非基础组件,这个时候我们第一反应就是去自定义布局。将很多常用的UI业务需求,封装成一个View来操作,可以有效加快我们编码和开…

笔中藏音,非凡录制 — WT2003H录音芯片方案,让每一支笔都成为你的高清录音神器

开发背景: 在数字化时代,录音笔作为记录与传播声音的重要工具,其性能与功能的提升直接关系到用户的使用体验。随着科技的飞速发展,市场对于录音笔的需求不再仅仅局限于基本的录音功能,而是更加注重音质、便携性、耐用…

Java中包的使用

针对在同一个类中使用不同包中的同名类时,这时候我们需要使用全类名。

React学习-jsx语法

jsx语法,浏览器不认识,需要经过babel编译 https://babeljs.io/ 面试题:jsx的作用? 普通回答:可以在js中返回dom,经过babel编译成js认识的代码import { jsx as _jsx, jsxs as _jsxs } from "react/j…

Maven的理解与应用

Maven使用 一、Maven的含义 Maven是一个构建项目的工具,也是一个管理项目的工具 二、Maven的应用 构建项目 管理依赖 做项目的热部署 基于项目做多模块(modle)的构建 三、Maven的安装 注意:maven本身不需要安装,下…

JVM(十)深入理解JVM类加载模型以及双亲委派模型

本文详细介绍了Java的类加载机制,包括加载、链接和初始化三个阶段。强调了双亲委派模型的重要性,这是一种避免重复加载类并维持Java核心库安全的类加载策略。文章还探讨了Java类加载器的不同类型,包括启动类加载器、扩展类加载器和应用类加载…

Spring Cloud Alibaba 集成分布式定时任务调度功能

作者:千习 背景简介 定时任务是指在约定的时间,或者按照固定频率周期性执行的任务。在企业应用中,非用户行为发起的后台业务,一般都是通过定时任务来实现,常见场景如下: 异步数据处理:比如先…

【gpt生成文本的回复的原理和代码,通俗思路清晰】

首先介绍了贪婪解码 其次为增家多样性,用温度系数和TopK增加采样 真实的采样步骤 1、topk备选tokens 2、用维度系数大于1让概率平衡一下,3.再用softmax,4.根据概率分布采样 1、贪婪解码 # 之前,我们总是使用torch.argmax采样最大…

年薪30万+,TOP大厂月薪10万+....网络安全工程师凭什么?

时代飞速发展,我们的工作、生活乃至整个社会的运转都越来越依赖于网络。也因此,网络的无处不在带来了前所未有的安全风险。 从个人隐私泄露到企业机密被盗,再到国家关键基础设施遭受攻击,网络安全问题无处不在,威胁着…

SQL之使用存储过程循环插入数据

1、已经创建了任务日志表 CREATE TABLE t_task_log (id bigint NOT NULL AUTO_INCREMENT,task_id bigint NOT NULL COMMENT 任务ID,read_time bigint NOT NULL COMMENT 单位秒,读取耗时,write_time bigint NOT NULL COMMENT 单位秒,写入耗时,read_size …

8月13日学习笔记 LVS

一.描述以及工作原理 1. 什么是LVS linux virtural server的简称,也就是linxu虚拟机服务器,这是一个 由章文嵩博士发起的开源项目,官网是 http://www.linuxvirtualserver.org,现在lvs已经是linux内核标 准的一部分,使用lvs可以达…

网络剪枝——network-slimming 项目复现

目录 文章目录 目录网络剪枝——network-slimming 项目复现clone 存储库Baselinevgg训练结果 resnet训练结果 densenet训练结果 Sparsityvgg训练结果 resnet训练结果 densenet训练结果 Prunevgg命令结果 resnet命令结果 densenet命令结果 Fine-tunevgg训练结果 resnet训练结果 …

5个小众宝藏软件看看有没有你喜欢的

冷门APP分享来啦,这5个小众宝藏软件看看有没有你喜欢的吧! 1.space登月计划 从地球到月球的大概距离是3.84亿米,而登月得消耗掉大约3.2亿千卡的能量。一个人想单飞登月得花上万年。 但在space上,可以和小伙伴一起合作玩登月游戏…

记录Java使用websocket

实现场景:每在小程序中添加一条数据时,后台将主动推送一个标记给PC端,PC端接收到标记将进行自动播放音频。 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import or…

GitHub 2FA中国认证教程

1. 问题描述 在github上有过代码贡献的账号在登录时需要进行2FA双重身份验证。 这是github官方给出的关于2FA的解释: 官方文章地址:点击进入 这是登录时2FA的验证界面: 我们需要使用扩展程序解析这个二维码拿到2FA验证码,填入二维…

python爬虫滑块验证及各种加密函数(基于ddddocr进行的一层封装)

git链接: https://github.com/JOUUUSKA/spider_toolsbox 这里写目录标题 一.识别验证码1、识别英文+数字验证码2、识别滑块验证码3、识别点选验证码 一.识别验证码 git链接: https://github.com/JOUUUSKA/spider_toolsbox 创作不易记得stars 1、识别英文&#xf…

Arduino控制带编码器的直流电机速度

Arduino DC Motor Speed Control with Encoder, Arduino DC Motor Encoder 作者 How to control dc motor with encoder:DC Motor with Encoder Arduino, Circuit Diagram:Driving the Motor with Encoder and Arduino:Control DC motor using Encoder feedback loop: How …