首页 > 编程语言 >自动化测试框架、Python面向对象以及POM设计模型简介

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

时间:2024-03-19 11:55:26浏览次数:27  
标签:脚本 模块 框架 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的设计模式来开展

 

标签:脚本,模块,框架,Python,面向对象,POM,测试,页面
From: https://www.cnblogs.com/R-bear/p/18082451

相关文章

  • python 小小入门2
    紧跟上章使用FinalShell1)mkdiraaa创建文件夹mkdir-p/aaa/bbb/ccc创建文件夹以及后续2)touch 例如touch1.txt也可touch1.txt2.txt3.txt以及touchfsd.sdad也可以创建如果已经有了touch1.txt再创建一个touch1.txt那么他不会覆盖以及删除原来的文件只......
  • python中`__call__`让类像函数一样被调用
    在训练一个网络过程中,有下面代码'''4.训练网络'''print('开始训练')forepochinrange(3):runing_loss=0.0fori,datainenumerate(trainloader,0):inputs,label=data#1.数据加载ifdevice=='gpu':......
  • 简化python ctypes库调用API的封装
    使用ctypes库调用C的函数,需要进行封装.如下所示:#对结构的封装classSTARTUPINFOEX(Structure):"""STARTUPINFOEXstructure"""_fields_=[("StartupInfo",STARTUPINFO),("lpAttributeList",POINTER(PVOID))......
  • matinal:SAP ABAP OO面向对象编程中的触发和处理事件
    ......
  • Python轻松实现地图可视化(附详细源码) 转载
    大家好,我是J哥,专注原创,致力于用浅显易懂的语言分享爬虫、数据分析及可视化等干货,希望人人都能学到新知识。Python的地图可视化库很多,Matplotlib库虽然作图很强大,但只能做静态地图。而我今天要讲的是交互式地图库,分别为pyecharts、folium,掌握这两个库,基本可以解决你的地图可视化需......
  • Python伪数据生成器Mimesis 使用
    一、**Mimesis的介绍**Mimesis是一个用于Python的high-performance伪数据生成器,它用各种语言为各种目的提供数据。这些假数据可以用来填充测试数据库,创建假API端点,创建任意结构的JSON和XML文件,匿名化从生产中获取的数据等等。二、**主要特点是:***性能:Python可用的最快的数......
  • 二维前缀和&二维差分(超详细,python版,其他语言也很轻松能看懂)
    上一篇文章讲解了一维前缀和&一维差分,本篇进阶为二维。二维前缀和:二维前缀和跟一维前缀和求法相同,这里直接上例子。数组a=[[1,2,2,1],[3,2,2,1],[1,1,1,1]]a数组如图:则数组a的前缀和为:数组b[[1,3,5,6],[4,8,12,14],[5,10,15,18]]b数组如图:前缀和递推公式为b[i][......
  • 【黑马程序员】Python高阶
    文章目录闭包定义nonlocal关键字作用优缺点优点缺点装饰器装饰器闭包写法设计模式单例模式工厂模式优点代码示例多线程基本概念threading模块网络编程服务端开发socketsocket服务端编程客户端开发正则表达式正则的三个基础方法matchsearchfindAll元字符匹配单字......
  • python基础中的基础
    python基础学习Created:November28,20236:48PMTags:Beginning值得思考的一些事情......
  • 【Python循环4/5】跳出循环的办法
    目录导入break具体用法在for循环中的运用在while循环中的运用continue具体用法区别总结导入        前几天的博文里,我们学习了for循环和while循环。        无论是for循环还是while循环,默认的终止条件都是边界条件。在触发边界条件之前,代码会一......