ddt一指data driver test,是一种测试思想,意指数据驱动
这里将的ddt是ddt库,配合unittest使用。
假设我们有个登录功能需要设计测试用例,用例如下:
1.正确的账号密码登录。
2.错误的账号密码登录。
3.账号为空登录。
4.密码为空登录。
5.....
这同一个功能如果每一个用例都单独写一个方法,岂不是太冗余了?你会说,我可以用同一个方法,然后将用例的数据做成列表或者字典,遍历循环那就很简洁了啊。
这样想其实没有错,当你执行的时候会发现,unittest虽然将所有的数据都跑完了,但是输出的结果是仅执行了一条用例。
这里就需要用ddt这个库来解决这一系列的问题了
import unittest
import ddt
login_datas = [['admin','123456'],['admin','12345'],['','123456']]
@ddt.ddt
class TestClass(unittest.TestCase):
@ddt.data(*login_datas)
def test_login(self,login_data):
...
self.AsserEqual(login_data[0],login_data[1])
首先是引入unittest和ddt库,将数据准备到一个列表中去。最后用类装饰器和方法装饰器将数据加载到对应的方法中(使用方法固定,记住步骤就好)。
需要注意的是类装饰器是ddt.ddt,方法装饰器是ddt.data(),方法装饰器是需要传递参数的,这里的参数是该测试方法的数据。记得在参数前加一个*,用于将参数解包,每次ddt会从列表中取一个参数,将之传递给测试方法。