前面我们讲了什么是python数据驱动,如何使用及如何实现数据驱动。没看过文章的请移步:
Python数据驱动实践(一)–ddt实现数据驱动
Python数据驱动实践(二)–教你用Python实现数据驱动
今天我们来解决另外一个问题,实现数据驱动后,如何在测试报告里体现?
老规矩,先上段代码:
我们知道,运行测试用例时候,通常会给一个待运行函数的集合,针对集合的每一个函数,逐个运行一遍,然后收集每个测试函数(用例)的名字,运行结果,然后保存,待生成测试报告用。
我们当前的代码, 根据data provider提供的数据不同,test_sum_data 这个函数也会运行多次,但是测试报告里只有一个test_sum_data, 那么如何解决呢?
1.先检查要运行的测试函数有没有data provider。
2.对于每个有data provider的测试函数,针对每一条数据,生成一个新的名字。
3.把新的名字加入到要运行的test case列表里。
根据这个我们知道,我们代码少两个函数实现, 一个是检查函数有没有data provider, 二是给有data provider装饰的函数生成新名字。怎么实现,当然是装饰器啦。
那么如何检查函数有没有提供data呢?我们可以人为给提供了data的函数加些属性。
如何给有__data__provider \ 属性的函数生成新名字呢?
那么,怎么组织把这些命名的新函数添加到待运行列表呢?
最后我们整理下,看看实际上是如何使用的。
我们定义并维护了三个列表,一个是cases_to_run,放我们找到的所有的测试用例,一个是cases_run_success,放运行成功的用例,最后一个
cases_run_fail, 放测试不成功的用例。
从运行结果我们可以看出, 我们只有一个测试函数test_sum_data,测试报告里却有了两个用例test_sumdata112_3, test_sumdata245_6。
就这样我们就实现了测试报告里数据驱动可视化。
Hold on, 看我上面代码的注释(注1),我们传入的是固定的测试类,那么在真实的测试中,我希望框架去自动查找测试类和测试方法,这个怎么搞?
请期待下次分享 :)