自动化测试框架、Python面向对象以及POM设计模型简介

1  自动化测试框架概述

所谓的框架其实就是一个解决问题的思维,前言中描述的诸多问题如果得到解决,自然而然这种得到良好解决的东西它就可以称之为一个框架,只是这个框架用来解决如何组织开展自动化测试。一个典型的自动化测试框架一般包括测试用例集模块、测试执行控制模块、测试报告生成模块、日志记录模块、发送邮件模块、测试截图或者断言验证等模块,这些模块之间不是相互孤立的,而是相辅相成的存在。下图为基本的自动化框架的基本单元或模块:

下面简要说明每个模块的作用:

1.    Test Case Module

测试用例模块包括具体的测试用例脚本集、测试数据的管理以及公共函数库

        2.Test Run Control

测试运行控制模块是自动化用例执行组织模块,主要负责以什么方式执行测试用例脚本,以及什么时间执行、执行多少次、执行哪些用例等

       3.Test Report Module

测试报告生成模块主要负责测试执行的结果集生成报表,报表一般以HTML格式体现,可以知道执行了多少条用例,成功数、失败数等信息

      4.Logging Module

日志模块主要用来记录脚本执行的情况,便于更加高效的查看脚本执行的情况以及位置,和脚本执行失败的情况

     5.Send Email Module

发送邮件模块主要实现测试报告以邮件的形式发送

     6.Test image

测试用例执行后预期结果的验证,一般以截图或者日志以及测试断言的形式来判断用例是否符合预期结果

2  自动化测试框架需要的环境

Python3.6:由于Python2版本要逐步退出历史舞台,故选用主流的Python3版本,后续的测试脚本均基于Python3编写

PyCharm:Python IDLE开发工具,便于快速创建项目和开发脚本,以及它相应的代码错误检测和代码调试机制,防止代码语法错误,从而构建层次清晰的项目和代码结构。

Selenium2:使用Selenium自动化测试框架,主要用到Selenium Webdriver模块,能模拟提供浏览器、页面元素定位、元素操作、鼠标键盘等相关的操作和方法

Python Unittest:Python的单元测试框架模块,在此框架下编写具体的业务测试用例脚本,另外此框架能组织测试用例集的执行和测试场景恢复

Python相关的标准库:time模块主要提供对时间的相关操作, os.path 模块主要提供对文件路径相关的操作,logging模块主要提供对日志相关的设置 ,smtplib 模块主要负责发送邮件等

Python 相关的第三方模块库:HTMLTestRunner 模块主要用于生成HTML格式的可视化测试报告,xlrd模块是读取excel文件数据的模块,xlwt模块是向excel文件中写入数据的模块

其中Python单元测试框架模块以及标准库和第三方库的使用,后续的博客会陆续总结出来

3  自动化测试框架设计思想:Python面向对象

面向对象的编程---object oriented programming,简称:OOP,是一种编程的思想。OOP把对象当成一个程序的基本单元,一个对象包含了数据和操作数据的函数或者方法。面向对象能极大的提高了编程的效率,使其编程的重用性增高。因此既然咱们是写测试脚本,当然希望能够快速开发并易于维护,写出层次清晰的代码。就比如:一个登录功能的脚本,咱们可以写成一个公共的函数,后续其他的脚本用例需要使用登录这块的,直接调用即可,这里就是一个简单的封装啦!Python从诞生开始就是一基于面向对象来设计的语言,类似于java面向对象的思想。那么Python面向对象都有哪些基本概念:

     1、继承(inheritance)子项继承父项的某些功能,在程序中表现某种联系

  2、封装(encapsulation)把需要重用的函数或者功能封装,方便其他程序直接调用

  3、类:对具有相同数据或者方法的一组对象的集合

  4、对象:对象是一个类的具体事例

  5、实例化:是一个对象实例化的实现,就是一个具体的对象

  6、实例属性:一个对象就是一组属性的集合

  7、实例方法:所有存取或者更新对象某个实例一条或者多条属性函数的集合。

  8、类属性:属于一个类中所有对象的属性,

  9、类方法:在一个类中定义的方法

这里Python面向对象的话题较大,这里就不再深入探讨,咱们后续在实际的测试框架模块的实现过程中以一个个实例进行说明,反正Python面向对象的思想一定要深入骨髓,写多了就自然知道其好处。

4  自动化测试框架设计思想:POM(Page Object Model)页面对象模型

 POM是非常流行的自动化测试模型,它是一种测试脚本开发思想,采用POM的目的是为了解决软件前端元素或者UI界面频繁变化,从而造成自动化测试脚本维护和更改困难,其基本理念是将软件各个页面抽象成一个单独的页面类,类中封装页面元素的定位和操作方法,这种页面模式是页面与测试用例之间的桥梁。如下图所示:

采取POM后,主要的区别就是,把页面元素和业务逻辑和测试脚本分离出来到两个不同类文件。ClassA只写页面元素定位,和业务逻辑代码操作的封装,ClassB只写测试脚本,不关心如何定位元素,然后继承ClassA中的方法去覆盖不同的测试场景。如果前端页面发生变化,只需要修改ClassA的元素定位,而不需要去修改ClassB中的测试脚本代码。下图为对比非POM模式下的情况:

POM主要有以下优点:

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

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

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

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

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

总结:后续自动化测试框架各个模块单元的实现以及后续的测试脚本的开发编写,都会以Python面向对象和POM的设计模式来开展

总结:

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

市场复盘总结 20240307

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整,采用龙空龙模式 一支股票 10%的时候可以操作, 90%的时间适合空仓等待 二进三: 进级率中 89% 最常用的…

[OpenCv]频域处理

目录 前言 一、频域变换 1.傅里叶变换 2.代码实现 二、频域中图像处理 1.理解数字图片的频谱 2.频域图像处理步骤 3.使用低通滤波器实现图像平滑 4.使用高通滤波器实现图像锐化 三、总结 前言 数字图像处理的方法有两大类:一种是空间域处理法,…

【笔记】Android Telephony 漫游SPN显示定制(Roaming Alpha Tag)

一、功能名词简介和显示规则 Alpha Tag:运营商名称标识符,也是用于标识运营商的一个名称。客户需求描述常用名词,对开发而言都是SPN/PLMN功能模块的内容,状态栏左上角的运营商名称显示。 SPN相关文章: 【笔记】SPN和…

nyist_acm 个人积分赛1(部分题解会补充)

Mirrored String II 看到题解说是马拉车算法,我赛时并没想到(好吧其实我是比赛完才知道有马拉车这个算法) 因为字符串的长度只有1000,直接暴力跑其实就可以了,但是要注意的是;回文串有俩种形式&#xff0c…

nginx部署前端工程替代方案gateway

nginx部署前端工程替代方案gateway 有市场要求部署的前端vue工程不使用nginx中间件。想弄国产替代的东方通之类的,公司没有购买该产品,我参考了网上的一些java网关框架,springcloud组件:gateway实现代替。 注意后台都是用java编…

shadertoy 游戏《来自星尘》摇杆复刻

正确的做法应该是上 noise 而不是叠加 sin 波,不过如果不想麻烦的话叠波还是一个不错的选择:整体效果如下,已经非常形似 直接上链接:Shader - Shadertoy BETA float radiusScale 0.9; float variation(vec2 v1, vec2 v2, float …

据说这是最细滴,Python接口自动化测试数据驱动DDT使用实战,有这一篇就完全足够了

前言 环境准备 首先,需要安装ddt模块 pip install ddt调用时标准格式 在类下面如下写上:ddt.ddt 在调用的方法下面需要写上:ddt.data(需要传入的多组数据) DDT简单介绍 名称: Data-Driven Tests,数据驱动测试。 作用…

深入理解Servlet

目录: ServletWeb开发历史Servlet简介Servlet技术特点Servlet在应用程序中的位置Tomcat运行过程Servlet继承结构Servlet生命周期Servlet处理请求的原理Servlet的作用HttpServletRequest对象HttpServletResponse对象ServletContext对象ServletConfig对象Cookie对象与…

Keepalived实验

一、 LVSKeepalived 实验:7-1为主; 7-2为备; 7-3和7-4为后端服务器 1.关闭防火墙和selinux [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 02.配置主设备7-1 1.安装ipvsadm和keepalived [rootlocalhost ~]#…

阿珊解说Vue中`$route`和`$router`的区别

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

可视化图表:柱坐标系与对应图表详解

一、柱坐标系及其构成 柱状坐标系是一种常见的可视化图表坐标系,用于显示柱状图(也称为条形图)的数据。它由两个相互垂直的轴组成,一个是水平轴(X轴),另一个是垂直轴(Y轴&#xff0…

评测本地部署的语音识别模型

1 引言 最近,朋友给我发来了一段音频,想转录成文字,并使用大型润色文本。音频中的普通话带有一定的口音,并且讲解内容较为专业,所以一般的语音识别工具很难达到较高的识别率。 于是试用了两个大模型。Whisper 是目前…

AIOps常见问题

AIOps的自动化通常指什么? AIOps 平台的自动化一般包括以下几个方面: 数据收集和整合:AIOps 平台可以从多个 IT 基础架构组件、应用需求与性能监视工具以及服务工单系统等数据源中收集并整合运维数据,形成一个全面的数据平台。数…

Access AR Foundation 5.1 in Unity 2022

如果已经下载安装了ARF但版本是5.0.7 可以通过下面的方式修改 修改后面的数字会自动更新 更新完成后查看版本 官方文档 Access AR Foundation 5.1 in Unity 2021 | AR Foundation | 5.1.2

YOLOv9中train.py与train_dual.py的异同!

专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,主力高效涨点!!! 首先,train.py(左)与train_dual.py(右)中的损失函数是不一样的,这也解释了为什么使用train.py除了填入…

Visual Studio 2022之Release版本程序发送到其它计算机运行

目录 1、缺少dll​ 2、应用程序无法正常启动 3、This application failed to start because no Qt platform plugin could be initialized. 代码在Debug模式下正常运行,然后切换到Release模式下,也正常运行,把第三方平台的dll拷贝到exe所在…

Chrome浏览器好用的几个扩展程序

Chrome好用的扩展程序 背景目的介绍JsonHandle例子未完待续。。。。。。 背景 偶然在往上看到Chrome有很多好用的扩展程序,比较好用,因此记录下比较实用的扩展程序。 目的 记录Chrome浏览器好用的插件。 介绍 JsonHandle下载以及无法扩展插件的解决…

Vue3_2024_6天【回顾上篇watch常见的前三种场景】另两种待补

第一种情况:监视【ref】定义(基本数据类型) 1.引入watch2.格式:watch(基本数据类型数据,监视变化的回调函数) 注意点: 2.1.watch里面第一个参数,是数据~~【监视的基本类…

基于深度学习的三维重建MVSNet系列

2019年4月15日下午6时50分左右,一场大火席卷了法国巴黎圣母院,持续长达14小时。幸而巴黎圣母院有着高分辨率的3D模型,研究人员可以了解圣母院本身的建造结构,以便修复工程的开展。 多视图立体几何(Multi-View Stereo&a…

unity-urp:视野雾

问题背景 恐怖游戏在黑夜或者某些场景下,需要用雾或者黑暗遮盖视野,搭建游戏氛围 效果 场景中,雾会遮挡场景和怪物,但是在玩家视野内雾会消散,距离玩家越近雾越薄。 当前是第三人称视角,但是可以轻松的…