从零开始搭建一个简单的ui自动化测试框架02(pytest+selenium+allure)

二、先搭一个架子

在我还是小白连py语法都不太熟悉的时候,经常在网上看关于自学ui自动化测试的博客,最熟悉的套路莫过于先给你介绍一下selenium的各个api,然后写一套代码去登陆微博或者百度什么的,但我今天不愿意这么写,因为这样的话,实际上并没有什么卵用,他不能用到实际的项目里,今天我们来先搭一个架子。

搭架子先画图

我们首先来确定一下我们的项目架构图,也即是我们打算怎么具体设计我们的项目,下面来聊一聊我设计时的思路。

其他的先不谈,测试用例肯定是集中放到一个地方的,于是我创建了一个testcase的位置专门用来放用例,此时我们的架构图是这样的:
—————testcase

接下来我又想到,我们的用例可能需要按照要求集合执行,所以我又创建了一个testsuite的位置专门放集合的用例,于是架构图多了一个:
—————testcase
—————testsuite

然后又想到,因为我们的测试用例需要支持单独执行,所以必然需要重复的测试前和测试后的动作,先不谈更多的动作,但是打开和关闭浏览器肯定是必须的,所以要想不在每个case里重复的写这些动作,我们就需要一个测试用例的主类用以被case继承,我把这个主类单独的放置到了一个位置maincase,于是架构图:
—————testcase
—————testsuite
—————maincase

我们再来想一下case里更具体的问题吧,比如说,我们可能需要一个(除开浏览器操作外的)工具集用以对case提供支持,包括发送Email,打开windows窗口选择文件还有其他可能遇到的奇奇怪怪的事情,我们给这个部分留了一个util的位置,再来看看架构图:
—————testcase
—————testsuite
—————maincase
—————util

再想想,如果我们发送email,那当然是要先生成测试报告,测试里遇到问题的话,最好可以有截图用来看看当时为什么出错了,那么我们各留一个位置给报告和截图:
—————testcase
—————testsuite
—————maincase
—————util
—————testreport
—————sreenshot

接下来,处理一下我们的元素存放位置,元素的管理是UI自动化里的重要点,如果不做到case和元素分离的话,维护用例将会变得非常困难,每次迭代只要元素变动了,你就得一个一个case的改,这里我们把元素集中到一个config里,稍后在具体编写阶段告诉大家如何存储,这里先分一个config的位置给元素:
—————testcase
—————testsuite
—————maincase
—————util
—————testreport
—————sreenshot
—————config

最后,如果我们希望我们的用例足够简洁的话,我们就应该把那些常用的操作封装起来,这里的封装分为两个层面封装,第一是对常用基础操作的封装,第二是对常用业务操作的封装。

解释一下的话,就是我们首先把基础的操作封装到一起,例如,寻找元素,如果我们想统一使用隐式等待(不明白的话后续篇章会介绍到)去查找元素的话,就需要把selenium里的find方法封装一下,这种是对原先的基础操作的封装;
而比如说,我们写case的时候发现,很多个case都会有一个同样的跳转路径,都是通过点击xx,再点击xx到达这个页面,我们就把这个操作路径封装了给我们的case使用,避免case里重复的写这些路径,这层封装是对复用性高的业务逻辑操作的封装。

我们给这两层封装留个位置operate:

—————testcase
—————testsuite
—————maincase
—————util
—————testreport
—————sreenshot
—————config
—————operate

这样目前来看,我们的架构图大体就画完了,剩下的如果有遗漏再开发过程里修复吧,我们看看最终的项目架构(目前还是空的):

img_628a4d64ad5a5764b4c224e5dc673da9.png
image

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

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

相关文章

DML语言DDL

DML(data manipulation language): 它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言 。 DDL(data definition language): D…

什么是Adobe Lightroom,我需要它吗?

Adobe Photoshop Lightroom confuses a lot of new photographers. It has Photoshop in the name, but it isn’t Photoshop? What gives? Adobe Photoshop Lightroom使许多新摄影师感到困惑。 它的名称是Photoshop,但不是Photoshop吗? 是什么赋予了&…

jquery中的serializeArray方法的使用

转载于:https://blog.51cto.com/11871779/2359556

新冠病毒中招|第一天

感染新冠病毒后具体如何治疗,需要根据感染者病情轻重情况而定,严重的要听医生的。昨天是我个人感染奥密克戎毒株第一天,今天跟大家分享一下我的情况。我昨天感觉浑身无力,也有点发烧37.9,我就吃了感冒药睡了一上午&…

机器学习(一)—— 线性回归

机器学习(一)—— 线性回归 目录 0. 回归(Regression)的由来 1. 回归关系 2. 线性回归的整体思路 (1)根据数据提出假设模型 (2)求解参数 1)梯度下降法 2)正规…

Java EE启示录

前言 最近的这段时间一直在学习Java EE,刚刚完成了从0到1的蜕变,所以顺便整理一下我所了解到的Java EE,给刚入门学习的新人一些头绪,而所谓“启示录”,就是这个意思。 一.Java EE是什么? Java EE&#xff0…

又到年末“团建”!某企业员工吐槽:这真是一场噩梦……

这是头哥侃码的第270篇原创2022年即将结束,很多公司又到了一年一度的年末团建。前天晚上,之前的同事找我聊天,说他们公司因为最近疫情的原因,准备把年末“团建”放到春节后进行。但是计划的时间是2月份的某个周末,并且…

天梯 L2 这是二叉搜索树吗?

L2-004 这是二叉搜索树吗? (25 分)一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, 其左子树中所有结点的键值小于该结点的键值;其右子树中所有结点的键值大于等于该结点的键值&#xf…

三星笔记本进入BIOS后找不到U盘启动项/快速启动键F12没有反应

分析:BIOS开启了 Fast Bios Mode 解决方法: 开机按F2进入BIOS设置,选择Advanced菜单下Fast Bios Mode,设置为 Disabled,按F10键保存退出,重启时按F12键即可进入快速启动界面选择。或按F2进入BIOS设置&#…

IP别名与多网卡绑定(RHEL5/RHEL6)

RHEL6的网络管理与RHEL5的有比较大的改变。虽然在RHEL5、6中均安装有NetworkManager,在RHEL5中2、3、4、5级别中默认是不启用的。但在RHEL6中,默认是启用的,NetworkManager会一直监控网卡状态,修改网卡参数立即生效不用重启服务。…

基于.NetCore开发博客项目 StarBlog - (25) 图片接口与文件上传

1前言上传文件的接口设计有两种风格,一种是整个项目只设置一个接口用来上传,然后其他需要用到文件的地方,都只存一个引用ID;另一种是每个需要文件的地方单独管理各自的文件。这俩各有优劣吧,本项目中选择的是后者的风格…

pta7-7旅游规划(dijkstra算法)

题目链接:https://pintia.cn/problem-sets/1101307589335527424/problems/1101314114762387456 题意:给n给城市,m条公路,公路是双向的,起点S,终点D,并给出每条公路连接的两个city的编号以及路费…

context:annotation-config vs context:component-scan

<context:annotation-config> 用来注入已经在上下文注册的bean&#xff0c;无论bean是定义在XML中还是被 package scanning。 <context:component-scan>仅scans packages 去注册应用上线文中的Bean。 example&#xff1a; Lets start with a basic setup of three …

Cactiz中文版安装使用

#----------------------------------------------------------# # > 红色字体 -特指煮酒个人所见。加粗则为需要重点注意。 ## > 蓝色加粗 -特指与本文相关人员&#xff0c;包括参与修正的朋友。 ## > 煮酒品茶 -Http://cwtea.blog.51cto.com # #----------…

如何在OS X中打开或关闭鼠标定位器

OS X 10.11 El Capitan includes a new “mouse locator” feature. If you lose your mouse pointer, just shake the mouse or move your finger on the touch pad vigorously, and the mouse pointer will temporarily grow very large so you can see it. OS X 10.11 El Ca…

微软宣布 Win10 设备数突破8亿,距离10亿还远吗?

百度智能云 云生态狂欢季 热门云产品1折起>>> 微软高管 Yusuf Mehdi 昨天在推特发布了一条推文&#xff0c;宣布运行 Windows 10 的设备数已突破 8 亿&#xff0c;比半年前增加了 1 亿。 根据之前的报道&#xff0c;两个月前 Windows 10 的全球市场份额才首次超越 W…

UI自动化web端框架path.py代码

import os,sysBASE_PATH os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))sys.path.insert(0, BASE_PATH)# 配置文件CONF_PATH BASE_PATH os.path.sep conf os.path.sep config.json# 日志的路径WEB_LOG_PATH BASE_PATH os.path.sep lo…

snapchat为什么_我的Snapchat朋友旁边的表情符号是什么意思?

snapchat为什么Next to some of your Snapchat friends, you’ll see little emoji. 在您的某些Snapchat朋友旁边&#xff0c;您会看到小的表情符号。 Each of these emoji has a specific meaning. Let’s look at what they are. 这些表情符号都有特定的含义。 让我们看看它们…

暴力打表之hdu 2089

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2089 有两种方法&#xff1a; 1.数位DP算法 2.暴力打表——真是个好法子&#xff01;&#xff01;&#xff01; 接下来是注意点&#xff1a; 1.一般这种数组中的一个数减去一个数组的另一个数&#xff0c;sum[i…

最全的正则表达式大全

很多不太懂正则的朋友&#xff0c;在遇到需要用正则校验数据时&#xff0c;往往是在网上去找很久&#xff0c;结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下&#xff0c;在这里分享一下。给自己留个底&#xff0c;也给朋友们做个参考。 一、校…