传统的Pytest架构
1.1 架构展示
架构:Pytest+参数化+PO设计模式
当然,还有把定位封装成类变量的,这东西画蛇添足而已,就不展示了
1.2 架构缺陷
首先,传统架构管理用例只能通过添加测试模块完成。一个大型项目,具备几十上百个模块,部分模块还有数个小模块。这就导致一个自动化,展开会有上百个py文件。怎么管理,怎么维护?看着都头疼
其次,数据与代码混搭,导致查找问题,维护自动化更难。试想一下,从100多个py文件里面,找到 错,当然,代码还可以直接看行数,然后要找到数据。得多乱才可以形容!
再次,所有用例的步骤都是没有封装过的,需要去拓展一些功能,比如:定位兼容,高亮显示操作元素,给步骤添加描述,截图等。一改就要改100多个py,几千上万行代码。要拓展,只能堆工作量。自动化有何意义!
关键字驱动
2.1 关键字驱动详解
讲自动化不讲关键字驱动,那是耍流氓~。有不同看法的同学可以看看目前主流的自动化工具,比如RF,selenium,playwright等等。哪个不是关键字驱动呢?怎么到了我们自己做了,返回还退步了!
那什么是关键字驱动呢?简单的来说,就是根据公司实际需求,DIY不同的功能单元,把这些功能单元封装为相应的函数,通过调用函数名,调用函数就可以实现特定功能。这样的封装方式,称为关键字封装;这样函数名就是关键字。注意到,我们这里讲到了DIY,讲到了公司实际需求。一定要清楚,一个开源技术要能流行,其重点是普适性,同样,也就意味着它需要更多操作去完成普适性。但是,在公司我们就需要根据公司的现状进行简化,简化,再简化。因为,此时我们不需要普适性了,适合我公司的就是最好的,也只有简单的东西,才能真正推行起来。
以web自动化为例,鄙公司下拉框比较多,而selenium选择下拉框至少要三步,这对于没有自动化基础的同学来说就比较复杂(主要是记不住吧~)。通过关键字封装,就可以简化为1步,当然就简单多了。并且有些特殊情况,测开还可以统一处理掉,从而让功能测试也能参与到自动化。
2.2 关键字驱动效果
同样功能的用例,对比效果,高下立判!
2.3 可拓展的重要性
例如,我们之前提到的拓展:定位兼容,高亮显示操作元素等。传统的兼容就只能一个个去改,假设领导提了需求,或者你想要做出更好的效果,但是没有十天半个月,领导都看不到呀!等你做出来,可能黄花菜都凉凉了。
关键字驱动的可拓展性,可能往往超乎你的想象!下面我们来见识一下~
看完这两个例子,有没有心动的感觉?如果有,请完成图上的课外作业!
数据驱动
数据驱动是关键字驱动的升华。事实上,我们一直在做的功能测试,一直都被定义为数据驱动测试(参考:数据驱动测试-百度百科)。由于,大部分功能测试是不具备编码和自动化能力的;所以,很多同学在公司开展自动化的结果都是无疾而终,甚至于,自己都最终沦为功能测试人员;其主要原因就是:自动化在实施的过程中,功能测试根本无力参与其中,而公司不可能花巨大代价大量招聘能参与到自动化的功能测试。其最终导致的结果就是自动化测试不得不先精通所有业务模块的功能测试,而后拟定出合理的自动化用例;最终,自动化还没有做起来,自己就被指派到xxx项目组,成为功能测试!
自动化测试作为手动功能测试的替代,如果能更贴近功能测试,那么在整个公司里面推广自动化将会取得前所未有的效果。数据驱动正是实现这一目标的关键。
在自动化领域,数据驱动力求将所有用例数据和代码全部解耦;在此基础上,功能测试可以根据功能场景,关键字如何使用,编写自动化用例;少量的自动化测试,则负责调试、稳定化、维护用例。基于这样合理的分工,可以在公司快速实现自动化,让领导看到自动化带来的收益,从而快速推广到整个项目。
达到这样的效果,那么整个自动化小组也就水涨船高,升职加薪指日可待了!
3.1 数据驱动原理
上文已经讲到,数据驱动力求将所有用例数据和代码全部解耦。解耦的第一步就是关键字驱动,自动化小组通过调研,把公司典型功能使用关键字封装并调试稳定。而后培训功能测试使用这些关键字,只要有合理的说明和查询通道,这一步还是容易实现的。
图例:我们可以对关键字汇总,并给出作用及用法,待查
而后,我们可以提供Excel用例模板,指导功能测试按模板编写用例,这样的用例任谁都可以写好
最后,自动化小组负责汇总所有模块用例,并调试稳定,建立完整的运行体质,得到 告结果
图例:Jenkins平台化allure测试 告,既高级,又方便领导查阅
3.2 数据驱动实现
首先,Excel集中管理用例
接着,我们将Excel用例读成三维列表
然后,我们只需要提供一个测试类,即可完成整个数据驱动的运行
最后,我们通过统一的运行和 告处理,得到结果
3.3 数据驱动的优势
其一:不需要无数的测试模块文件,我们只用一个test_web.py就可以实现所有用例运行。代码锐减100倍以上
其二:可以为所有用例和步骤添加描述,让领导有完美的阅读体验
其三:截图和步骤高亮等都可以统一处理
Pytest为何一定要结合关键字+数据驱动?icon-default.png?t=
M4ADhttps://ke.qq.com/course/315793?flowToken=1042615 本篇已录制好视频课程,详细内容:
1. 传统pytest架构展示与缺陷
2. 关键字驱动和实现
3. 关键字驱动应用及优势
4. 数据驱动原理和实现
5. 数据驱动效果及优势
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!