Python3+Selenium2完整的自动化测试实现之旅(五):自动化测试框架、Python面向对象以及POM设计模型简介

前言

之前的系列博客,陆续学习整理了自动化测试环境的搭建、IE和Chrome浏览器驱动的配置、selenium-webdriver模块封装的元素定位以及控制浏览器、处理警示框、鼠标键盘等方法的使用,这些内容还需要后续多加练习掌握,以达到灵活运用的程度。but,这仅仅只是开始,说明咱们能够使用selenium框架下的webdriver写出一个个测试用例脚本,也仅仅写给自己看看,如果需要写100条、1000条测试脚本,并能够高效快速的编写完成并批量执行,且要看到完整的执行结果,失败多少,成功多少,等等诸多问题需要一个完善的解决问题的思想。说白了就是如何高效的组织测试脚本编写和后续的维护,并输出我们自动化测试的最重要的一个部分:测试报告,因此解决上述问题的思想就是需要写一个适用于测试团队的自动化测试框架,并在框架下持续的进行脚本开发和维护的过程。那么,何为框架?来来来,喝杯咖啡,提提神先~~~

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的设计模式来开展

原文地址:https://www.cnblogs.com/tdp0108/p/10476437.html

时间: 2024-11-05 13:33:39

Python3+Selenium2完整的自动化测试实现之旅(五):自动化测试框架、Python面向对象以及POM设计模型简介的相关文章

Python3+Selenium2完整的自动化测试框架实现(二):IE和Chrome浏览器驱动配置

上一篇写了自动化测试需要的最基础环境配置,地址:https://www.cnblogs.com/tdp0108/p/10412073.html 当前市面上很多公司开发的应用软件都是BS架构,即基于浏览器和服务器的程序,这里涉及到一个问题,就是在测试过程中需要测试各种浏览器的兼容性.本篇继续承接上篇,配置IE和Chrome浏览器驱动,用于实现自动化驱动打开不同的主流浏览器. 1     Chromedriver配置 (1)    下载谷歌浏览器驱动,下载地址:http://chromedriver

Mac上Python3+selenium2环境搭建

查看当前Python版本 Terminal下输入Python,回车-->Mac自带Python,版本号为2.7(Mac自带Python2) 下载 1.官网上下载需要的3.0+安装包,官网在此 安装 2.傻瓜式安装 设置默认的Python版本为3 1.Terminal下输入 open ~/.bash_profile 打开配置文件 2.写入Python的环境变量: PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:${PAT

移动端自动化测试Appium 从入门到项目实战Python版

移动端自动化测试Appium 从入门到项目实战Python版 说到APP自动化测试,Appium可是说是非常流行了, 不仅支持多语言.多平台的优势,同时支持Andriod.iOS.H5的自动化测试:本课程会从初级的Appium框架讲起,涉及业界常见的po模型.关键字模型.服务自动化.持续集成等实战讲解,让你快速上手移动端自动化测试工作 appium做app自动化测试,环境搭建是比较麻烦的.也是很多初学者在学习app自动化之时,花很多时间都难跨越的坎. 但没有成功的环境,就没有办法继续后续的使用.

自动化测试常用断言的使用方法(python+selenium)

自动化测试常用断言的使用方法(python) 自动化测试中寻找元素并进行操作,如果在元素好找的情况下,相信大家都可以较熟练地编写用例脚本了,但光进行操作可能还不够,有时候也需要对预期结果进行判断. 这里介绍几个常用断言的使用方法,可以一定程度上帮助大家对预期结果进行判断. 这里介绍以下几个断言方法: assertEqual assertNotEqual assertTrue assertFalse assertIsNone assertIsNotNone (一)assertEqual 和 ass

Android自动化测试实战 Java篇主流工具,框架,脚本

String 前往下载 = " http://icourse8.com/Android_zidonghuaceshi.html "; 章节信息第1章 课程简介第2章 那些重要的Android工具和命令你真的都掌握好了吗?第3章 如何将Monkey工具玩出专业范?第4章 深度挖掘MonkeyRunner测试技术,教你google秘不示人的黑科技第5章 学好Robotium 搞定单元.黑盒.白盒及慕课网官方APP自动化测试第6章 UI自动化测试高手必备最新神器-UiAutomator第7章

移动端自动化测试Appium从入门到项目实战Python版 学习 教程

移动端自动化测试Appium从入门到项目实战Python版 学习 教程 原文地址:https://www.cnblogs.com/itye/p/11679036.html

喵星之旅-沉睡的猫咪-面向对象的设计原则

一.设计原则是什么? 有句话叫“人民群众是历史的创造者”,他的意思我理解为任何的理论都是基于具体的客观展现总结出来的,没有人民创造的既定事实,就无法出现任何的有理有据的理论模型. 对于面向对象的软件设计,最著名的一本书就应该是当年gof的那一本<设计模式:可复用面向对象软件的基础>.设计模式是面对具体问题,进行抽象分类,然后总结出来的行之有效的解决方案,就像人去创造历史.设计原则是进一步研究这些解决方案,进一步抽象出的指导思想. 如果把设计模式比喻成传统数学,即“1+1=2”的那套理论,那么设

自动化 测试框架部署(python3+selenium2)

安装Python 从https://www.python.org/downloads/下载最新版本的Python3,请注意,是3: 需要将Python的安装目录和安装目录下的Scripts文件夹添加到系统的PATH中,请注意安装过程中的相关选项: 安装过程,不再赘述 安装浏览器 下载并安装Firefox(推荐ESR版本)和Chrome浏览器 安装Selenium及扩展包 进入Python安装目录,找到Scripts文件夹. 安装Selenium 1 > pip.exe install -U se

软件自动化测试流程与我们的自动化测试

摘要 每一个对软件测试有兴趣或者专业的软件测试人员,在软件自动化测试之初都会有浓厚的兴趣也充满着激情.因为都能理解到自动化做好之后会减轻测试人员重复劳动的工作量.全面的测试数据覆盖可以提高软件质量.丰富的日志以及截图功能可以提升交付效率与便于分析问题等等的优点,都会令软件自动化测试者为之疯狂:然而,自动化测试却常常带给我们沮丧和失望,因为自动化在为我们解决问题的同时也会引入更多的问题,很多自动化技术的研究以及实施工作就会止步于此了.因此,在开展自动化测试之前,就应该制定自动化测试计划,目前基本从