⾃动化测试框架、Python⾯向对象以及POM设计模型简介
摘抄了⼀份写得不错的⾃动化框架概述,来⾃
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、实例⽅法:所有存取或者更新对象某个实例⼀条或者多条属性函数的集合。java调用python模型
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的设计模式来开展
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论