遥想自己刚刚成为一名QA时,听到自动化测试五个字,脑海中就开始自动浮现:
口中念念有词:自动化测试指的是编写脚本来自动执行测试、比较实际结果与预期结果,并生成测试报告这一过程。
内心:困惑茫然.jpg 无辜.jpg
当正式开始上项目,同组的小伙伴介绍自动化技术栈时,他们侃侃而谈:
python+pytest+requests+Jenkins+allure
Java+Selenium+TestNG+Jenkins
Java+REST-assured+TestNG+Jenkins
JavaScript+Jasmine+Appium+Jenkins
很简单的我跟你说balabala......
我always be like:
后来在各个项目上摸爬滚打,慢慢的也学会了如何在一个搭建好的自动化框架下,填充一些业务逻辑,写一写接口调用和页面交互,做一个搬运力工,但总觉得依然是雾里看花水中望月,似懂非懂,好像会一些,又不了解全貌。
我们总是习惯对于不了解的东西心生畏惧。在畏惧的加持下,自动化在我心里始终是一块艰深晦涩的东西。机缘巧合之下同组的自动化大佬发现了我的畏惧心理,她说我的畏惧实际上是先入为主被让人眼花缭乱的技术栈冲昏了头脑,我们在项目上实际操作的顺序是先搭好一套架子,再在这个框架里填充内容,但开始摸索学习的时候,其实是从简单的调用开始的,最终看起来复杂的框架,实际上只是实操过程中代码的封装和经验的总结。
为了让我有实感的体验一把从头开始的接口自动化测试,我收到了一份量身定制的任务列表
- 利用flask框架模拟API调用
- 写用例对API进行测试
- 调接口对数据库增删改查
- 生成测试报告
- 集成到pipeline
于是我开始了自动化探索之路,在摸索中消除了畏惧,也对自动化测试的全貌有了基本的了解。记录并分享下我的学习历程,希望能对和我有同样困惑的小伙伴有所帮助。
要进行接口自动化测试,第一步,得有接口。
项目上的接口是万万不敢拿来随意实践的,百度的接口是很不好用的,大佬指定的Flask闪亮登场解决了第一个选择接口的困难。
Flask官网文档:欢迎来到 Flask 的世界 — Flask 中文文档 (2.0.2)
简单学习一下用法之后,开始模拟一些简单的便于测试的API:
准备好调用返回之后,就正式进入写测试环节。
我们手工操作的时候,往往是通过postman来发请求,编写脚本用啥呢,度娘回答,requests是python语言最常用的接口测试框架。第一次选型done。
搞定选型以后,可以开始写第一个测试方法了
request使用入门参考:requests - 廖雪峰的官方网站
跟着教程尝试之后发现并没有想象的困难,第一个测试用例很快完成了。如何运行呢?这时候就需要一个单元测试框架,来帮忙完成:
1.测试发现:从多个文件中找到测试用例
2.测试执行:按照一定的顺序和规则执行并生成结果
3.测试判断:通过断言判断预期结果与实际结果的差异
4.测试报告:统计测试进度,耗时,通过率等,生成测试报告
本着便捷至上的原则,百度“python+测试框架”,得到了pytest,紧跟大众的脚步应该是不易出错的,第二次选型done。
pytest使用入门参考:Pytest 使用手册 — learning-pytest 1.0 文档
在项目中install pytest,使用最简单的命令行运行用例,得到第一次的测试结果
操作数据库的前提是在本地搭建数据库,这一步能搜到很成熟的手把手的教程,我摸索过程中并没有发现更加值得总结的点,此处就不再赘述,感兴趣的小伙伴可以移步:手把手教你MySQL数据库安装-Mac版 - 云+社区 - 腾讯云
连上咱的数据库
写上一个插入数据的接口再给它配上一个测试,第三个子任务done。
(ps:和直接在数据库操作不同,当我们使用代码执行sql语句时,需要commit方法来最终执行sql语句,负责该语句只提交未执行哦)
完成测试之后,怎么能没有测试报告,之前命令行输出的测试结果未免不够美观,不符合我们高大上(不是)的调性,得配上一个更加炫酷的测试报告,在谷歌搜寻一圈之后,选中了页面简洁美观的allure。
下载安装配置环境变量一条龙在这里:Mac下 allure的下载与配置 - 简书
由于allure报告不是一步生成的,配置完成后,还需要在测试目录下新建temp文件夹用来保存临时json文件,再进一步转化成更加美观的html报告。
生成临时json文件:
转化成更加美观的html报告:
运行测试后,在我们的目录下就可以找到allure测试报告。
用浏览器打开index.html,图文并茂的测试报告就出现了:
在完成测试报告子任务之后,对文件目录稍作整理,归并同类项之后我惊讶的发现,此时的目录已经有些项目上真实在用的自动化测试工程的雏形了
克制住溢于言表的愉悦,让我们来完成最后一个子任务,为了便于协作,将测试代码集成到pipeline。
搭建流水线参考文档:Mac Jenkins搭建 | Vicの博客
在配置页面编写脚本,拉取我们的工程,并执行测试
点击立即构建触发流程,就可以看到成功或失败的结果啦,console中可以看到更详细的信息
至此,我亲手搭建的第一个自动化测试框架就完成了,python+pytest+requests+jenkins+allure不再是令人望而生畏的技术栈,而是切实使用用来提升效率达成目标的工具,自动化测试在我面前揭开了它的面纱漏出了庐山真面目。
诚然,这只是自动化测试的一小步,无论是在框架搭建选型,还是代码风格/封装上,我都还有很长的路要走,但是下一次大家提起自动化开始balabalaba的时候,我也可以是:
摸索之路与心境变化与君共享。