之前带领小组其他成员完成了第一阶段的自动化测试,包括框架(appium+python+unittest)搭建、编写基本用例,目前已经完成了,现在考虑下一阶段的目标,我的期望是减少重复代码,争取做到数据驱动,做到能够自行读取设定的用例和步骤,那么怎么实现呢?数据放哪里、用例怎么生成等等。
参考一些资料后,使用setattr可以实现自动生成用例的方法,那数据呢,就使用yaml文件吧。
具体实现如下:
一、创建的测试类:
该类为测试类,继承自unittest.TestCase,主要的功能即为启动/关闭app等,begin_execute()是一个重点功能,听过eval()内置函数来执行一个字符串表达式,并返回表达式的值,很好用。
那么eval()的入参从哪里来呢?
二、从yaml文件中读取操作步骤:
yaml文件的示例,内容为测试的操作步骤:
以上两步即可以完成一条测试用例,那么如何自动创建一个测试用例呢?
三、自动删除test开头的测试用例:
这里直接命名yaml文件的名称为“test_xxxx.yaml”即可,这样通过setattr()可以在test_case测试类中生成一条“test_xxxx”的测试用例。
那么测试用例如何与执行的操作联系呢?那就是下面一步:
四、具体用例:
这里将test_case.begin_execute()的内容返回给test_generator的setattr()。
最后,我们只要读取所有yaml文件即可,通过test_generator()来生成。
这两天学到了这个方法,可以大大减少一期的代码量,同时对于维护用例也有改进。