无论是日常技术交流,还是在自动化测试实践中,经常会听到一个词叫:框架。之前对“框架”这个词知其然不知其所以然。现在看过一些资料以及加上我自己的一些实践有了我自己的一些看法。
那么:什么是框架?
在自动化实践过程中,框架就是一个半成品,框架是指对应用系统的部分设计或实现系统的部分结构。
举个栗子:selenium是不是一个框架?Yes,它是一个框架,那么这个框架能不能对一个指定的系统比如淘宝做自动化测试?答案是不能的,我们还必须使用这个框架封装好的方法去实现淘宝的业务逻辑。所以说框架就是封装好的一个半成品。
那么:什么是自动化测试框架?
自动化测试框架就是:为了对一个指定的系统做自动化测试而封装的一个半成品,自动化测试攻城狮可以调用这个半成品封装好的方法去实现一个指定系统的自动化测试!
还是不明白?没关系,下面一张图道破玄机!下面这个照片框架请问是不是一个半成品?不是一个完整的照片?但是它又是整个照片的一部分!
(1) 数据驱动框架
(2) 关键字驱动框架
(3) 数据驱动+关键字驱动混合型驱动框架
(4) 行为驱动(lettuce)测试框架
1.自动化测试框架最核心的是分层模式和封装:
分层模式:一般的情况下,自动化测试框架都会分三层:BasePage基础页封装层,PO模型层,TestCase测试用例层。这三层的关系为:TestCase测试用例层调用PO模型层的元素定位和元素操作,PO模型层调用BasePage基础页封装层。如下图:
除了以上框架核心三层外还包括:日志处理模块,ini配置文件处理模块,数据驱动模块,jenkins持续集成模块等。
2.自动化测试框架代码结构,如下图:
其中:
base文件夹为BagePage封装层。此文件夹下有基础方法封装base.py和基础单元测试封装base_unit.py。
common为公共的方法封装层。此文件夹下有配置文件工具:config_util.py,Excel读写工具:excel_util.py,日志处理:logger_util.py文件。
data为excel数据文件。都是数据文件
log为生成的日志文件。
pageobject为PO模型层。
report为生成的测试报告文件夹
testcase为测试用例层。
all.py为总执行文件。
import HTMLTestRunner
import unittest
from common.config_util import get_project_path, get_config
if __name__ == '__main__':
test_dir = get_project_path()+"testcase"
dis=unittest.defaultTestLoader.discover(test_dir,pattern="*.py")
#now = time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime(time.time()))
#filepath = get_project_path()+"/report/"+get_config("reportSet","reportFileName")+now+".html"
filepath = get_project_path()+"/report/report.html"
fp = open(filepath,"wb")
runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title="携程网自动化测试报告",description="报告详情如下")
runner.run(dis)
fp.close()
config.ini为全局配置文件。
#浏览器选择(不区分大小写,谷歌:Chrome;火狐:Firefox;IE:Ie;)
[Browser]
browserName = Chrome
#被测项目地址设置
[testUrl]
url=https://trains.ctrip.com/TrainBooking/SearchTrain.aspx###
#框架日志设置
#(分别为日志文件前缀,文件日志级别,文件日志格式,控制台日志级别,控制台日志格式)日志级别共五级(不区分大小写,默认为INFO):DEBUG,INFO,WARNING,ERROR,CRITICAL
[logSet]
LogFileName = log_
fileLogLevel = INFO
fileLogFormatter = [%(asctime)s] %(filename)s->%(funcName)s line:%(lineno)d [%(levelname)s] %(message)s
consoleLogLevel = INFO
consoleLogFormatter = [%(asctime)s] %(filename)s->%(funcName)s line:%(lineno)d [%(levelname)s] %(message)s
#框架报告设置(报告文件名称设置)
[reportSet]
reportFileName = report_
1、当前框架使用的是三层框架:
第1层、base文件夹是基础封装层,
第2层、pageobject是页面封装层(包括元素定位和动作),
第3层、测试用例层。其中第2层继承第1层的基础层,第3层调用第2层的动作。
2、其他不同的框架类型
(1)将第2层中的元素定位写入ini配置文件中。然后读取。
(2)分四层:把第2层分解成两层,分别是元素定位层、动作层。
每个公司,每个自动测试工程师封装的自动化框架都不一样,没有一成不变的自动化测试框架,也没有最好的自动化测试框架,只有最合适的自动化测试框架,最终总结出:
如果你觉得此文对你有帮助,如果你对此文有任何疑问,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣请拉到最上面关注笔者的名字!
??自动化测试相关教程推荐:
2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili
2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili
测试开发相关教程推荐
2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili
postman/jmeter/fiddler测试工具类教程推荐
讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili
2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili
2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili
如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。
如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步
在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。
我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,
测试开发视频教程、学习笔记领取传送门!!