前面几天, 我从数据驱动的一个第3方库ddt出发,连续分享了3篇文章:
测试框架–教你用Python实现数据驱动1
测试框架–教你用Python实现数据驱动2
测试框架–数据驱动动态增加测试用例
后面两篇文章实际上是任何一个测试框架都必须要有的部分。 今天我再分享一篇如何动态挑选测试用例, 大家知道,自动化脚本越写越多,但不是每次都需要full regression, 这个时候需要把开发修改涉及到的测试用例跑一下,而那些无关的用例可以不跑。
那么,思路是什么? 如果对每一个用例,我定义的时候给一个标签比如说Test,再给它一个值,True或False,这样我框架寻找测试用例的时候就找标签编辑为Test且值是True的就好了。
老规矩,先上代码:
结合我们上次讲过的动态添加测试用例, 和数据驱动,我们把这部分整合起来看看,一个简单完整的测试框架如下。
1.从指定的文件夹/文件下查找待运行测试类/方法
2.找到待运行测试类/方法,并根据数据不同重新生成测试用例
3.运行测试用例集并保存运行结果
我的整个项目层次结构是这样的:
其中:
Common:
放通用的功能,比如,查找待测试用例的test_case_finder, 和我们上文的定义是否测试类/测试函数的装饰器test_decorator
pages
放我们所有的页面功能,如果是UI测试,这个就对应于一个个的UI Page,我们将以Page Object组织页面元素,并定义页面类和方法,每一个页面当作一个page看待并定义一个类
tests
这个下面放我们的测试用例,结构跟pages完全对应,每一个测试类对应于一个page 类。
run
这个文件定义了用例如何运行,是并行还是顺序。
还有其它的很多功能,我们暂且不讲,先来看看这几个如何协作的。
再看它对应的测试类
这两个装饰类的定义Test()我们前面已经介绍过了,test provider定义如下:
好了,有了page类,有个test类,那么如何让我们的程序查找到我们需要运行的测试用例呢?
那么,用例找出来了,如何数据驱动呢?
测试用例也找到了,该运行了:
运行结果如下:
基本上实现了我们的需求,但是一个测试框架,要考虑的还很多,比如:
1.测试fixture,包括运行前准备和运行后清理。
2.并发执行
3.测试报告
4.邮件发送
5.错误截图
6.log记录
我后续将带你逐个击破,最终写出自己的测试框架,敬请期待。