大招来袭 | 还在为不会搭建自动化测试框架而发愁吗?万字长文,大佬有妙招!!
开始前我想吟诗一首
《无 题》
曾经有个难题摆在我的面前,自动化测试框架到底如何搭建?
曾经觉得它神秘而又那么难以企及;
曾经觉得它高端、大气、上档次。
而如今;
大佬想说;
其实他就是个工具和手段而已。
也许;
你也有如此的想法;
不如看大佬如何揭开它神秘的面纱。
果然,,,我还是不适合写诗,我就是那个程序员。
今天来说说webUI自动化框架如何搭建?
先抛出几个问题:
- 什么是框架?
- 搭建框架之前要做什么?
- 要用到什么技术?
- 作为新手我该怎么做?
什么是框架?
是不是蒙了?脑瓜子嗡嗡的,哈哈哈;
写了很久,其实我也道不明如何解释这个框架更为合理;
我们来看看大牛是如何解释的?
来自知乎作者金戈
的解释如下:
框架(Framework)是一个框子——指其约束性,也是一个架子——指其支撑性。
IT语境中的框架,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构。
在此结构上可以根据具体问题扩展、安插更多的组成部分,从而更迅速和方便地构建
完整的解决问题的方案。
我们来分析下:
- 约束性;
- 支撑性;
- 问题扩展;
- 构建问题解决方案。
SO,我们webUI自动化框架的目的也是如此:
我们把常用的功能进行封装,统一调用,并且支持功能扩展,开发者或者测试人员可以根据自己项目的需求来进行修改和扩展。
就好比如下:
基本是有点明白了吧。。。。。。
搭建框架之前要做什么?
- 首先得弄清,你要这个框架干什么?你的目的是什么?要解决怎样的问题,即实现目的;
比如我们ui自动化,
模拟用户行为操作,提升测试效率
的同时,能尽可能减少自动化的投入成本
- 模拟用户(鼠标、键盘)操作,达到快速、重复执行测试用例;
- 便于回归测试,快速覆盖主线用例或功能;
- 线上或线下巡检测试,结合持续集成,及时发现运行环境存在的问题;
- 提升个人自动化测试技术能力,为业务提供强有力的测试手段。
=======================================================
- 需要搞明白这个框架要实现什么功能,即实现需求是啥?
比如你要实现以下功能:
- 基于Unittest,封装、调用和组织所有的测试用例,进行批量或指定用例运行;
- 支持邮件服务,可添加任意团队成员邮箱,及时通知团队成员自动化运行结果;
- 支持log日志,保存运行过程所有或需要记录的数据;
- 支持HTML测试报告,直观展示测试结果和数据;
- 支持用例设计和测试结果分离,便于数据管理;
- 支持Json、conf、excel等配置文件读取,提供灵活的配置文件操作方法;
- 支持用户登录封装,后续所有的用例登录公用一个方法;
- 支持任意修改HTMLTestRuner,可定制测试报告模板;
- 支持测试报告多语言(英文和中文);
- 支持截图功能;
- 支持Jenkins持续集成。
- 需求有了,那我们要对需求进行详细分析,即需求分析
功能 | 说明 |
---|---|
使用Unittest框架 | 开源自动化测试框架,直接使用 |
批量或指定用例运行 | Unittest框架可支持此功能 |
log日志 | 使用Python的logging库即可 |
生成HTML测试报告 | 使用HtmlTestRunner.py模块可实现此功能 |
用例设计和结果分离 | 使用配置文件如excel、json等组织用例数据 |
支持Json、conf、excel等配置文件读取 | 这里先使用excel进行页面元素的驱动 |
用户登录封装 | 直接把登录功能模块化,使用Unittest框架中的setup,teardown即可 |
定制测试报告模板 | 使用HTMLTestRuner.py模块 |
报告多语言 | 使用HTMLTestRuner.py模块 |
截图功能 | 使用Selenium的save_screenshot方法 |
从上边我们就清晰知道我们是如何和开发过程联系起来,这样你就能知道需要怎样的技术了。。。。
- 由需求分析结果,来预研我们需要的技术栈
技术 | 版本及说明 |
---|---|
Python | V3.x(本文为3.7)===编程语言支撑 |
Selenium | V3.141.0 ===UI元素、控件的识别、定位,以及浏览器控制等 |
HtmlTestRunner | Python3版本===生成Html测试报告 |
Logging | Python自带===生成log日志 |
Xlrd | V1.2.0===excel读取方法 |
Unittest | Python自带===自动化测试框架 |
Smtplib | Python自带===邮件服务 |
Python自带===邮件服务 | |
os | Python自带===系统模块 |
PyCharm | Community 2020.2汉化版 |
操作系统 | Windows10旗舰版64位 |
其它 | 后续补充 |
- 根据技术栈和实现需求来确定我们的框架结构
│ main.py # 框架入口
│ README.md # READNE
│
├─common # 公用方法,统一封装和调用
│ │ baseInfo.py # 登录模块封装
│ │ creenShot.py # 截屏封装
│ │ HTMLTestRunner.py # 报告模板
│ │ logOut.py # 日志封装
│ │ readExcel.py # excel用例数据读写封装
│ │ reportOut.py # 报告封装
│ │ sendMain.py # 邮件封装
│ │ __init__.py
│
├─creenshot # 截屏文件存放目录
│ 2021-03-23-17_56_11_screen.png
│
├─file # 框架涉及到的所有文档存放目录
│ 1-框架架构图片.jpg
│ 2-框架结构说明脑图.jpg
│ 3-框架执行流程.jpg
│ 4-log日志截图.jpg
│ 5-html报告截图.jpg
│ 6-邮件样式截图.jpg
│ 7-README.png
│
├─log # log日志存放目录
│ 2021_03_23 17_57_40-MeiDuo _test_log.log
│
├─page # 页面元素封装
│ │ goods.py
│ │ usercentor.py
│ │ WebElement.xlsx
│ │ __init__.py
│
├─report # 测试报告存放目录
│ 2021_03_23 17_57_40-MeiDuo _test_report.html
│
├─testcase # 测试用例设计
│ │ test_goods.py
│ │ test_user_centor.py
│ │ __init__.py
-
根据框架结构和实现需求来确定如何运行框架,即设计框架的执行流程
-
接下来就是实现过程了
实现过程建议找一个实际的项目来开展。具体的就不说了,按照以上的流程和框架基本知道怎么做。
是不是很有难度???还是不太明白
不着急,继续往下看,还有妙招。
作为新手如何去做?
- 针对上边提到的技术栈,得提升个人技术能力;
比如selenium、python这两个必备技能,一定得积累。作为老鸟,给大家提供下某机构的测试开发的技能图谱,供参考。本框架可暂时不需要这么多,仅作为自己后续提升的点作为参考。
如果看不清,联系作者VX索取:NoamaNelson
- 弄明白框架中的目录和python包的含义;
直观的看,目录就是一个文件夹,而python包的话,相当于一个文件夹中多了一个__init__.py文件
- 学会使用Pycharm
这是基本的编程工具,是python强大的编辑神器,可以快速帮助你整理、阅读、开发代码
- 重申,一定要对Python有了解和学习
可以参考https://blog.csdn.net/noamanelson/category_10644387.html
码字不易
“武功心法”
经过上边的指引,如果还是对框架搭建没有思路,那博主给大家整理了一套完整的教程文档,帮助你一星期入门框架搭建:https://blog.csdn.net/noamanelson/category_10786401.html
总结
此时此刻,我还想吟诗一首:
《再 无 题》
天生我才必有用,
千金散尽还复来。
啊,
我是缺千金之人吗?
吾只要一金足以。
有志者事竟成,破釜沉舟,百二秦关终属楚;
苦心人天不负,卧薪尝胆,三千越甲可吞吴。
啊,
你无须破釜沉舟,只需照猫画虎;
你无须卧薪尝胆,只需按部就班。
啊,
自动化测试之路漫漫,
吾将上下而求索,
恭祝大家马到成功。
【分享、共勉、共进、提升】更多、更全、更新的软件测试领域知识,请关注: