Python Unittest与数据驱动
python中有一个装饰器类DDT,通过它我们可以复用代码,达到数据驱动测试的目的,该类的官方介绍可以参考
http://ddt.readthedocs.io/en/latest/index.html
安装ddt方式很简单,直接在cmd命令行输入:pip install ddt ,完成安装即可。
下面看一个简单的例子:
1 import unittest 2 from practise.myTestPractice.api_login import * 3 import ddt 4 5 6 @ddt.ddt 7 class Praddt(unittest.TestCase): 8 9 def setUp(self): 10 print("my test start!") 11 12 def tearDown(self): 13 print("my test complete!") 14 15 @ddt.data(["admin", "1qaz", "OK"], 16 ["admin", "", "ERROR"], 17 ["", "1qaz", "ERROR"], 18 ["admin", "1234", "ERROR"], 19 ["Admin", "1qaz", "ERROR"]) 20 @ddt.unpack 21 def test_ddt(self, user, passwd, expect_value): 22 result = Login.login(user, passwd) 23 self.assertEqual(result, expect_value, msg=result)
上面展示一个简单的测试类,测试对象是一个登录函数login,当用户、密码正确时,返回OK,用户或密码错误返回ERROR。我们在测试类上加上装饰器@ddt.ddt ,在测试方法上加上装饰器data和unpack,并把测试数据如上模式放在data中。
执行测试:
从unittest运行出的测试结果可以看出,我们共执行了5条测试用例,分别对应了data中的5条测试数据。也就是
说我们通过一个测试方法就依次读取到了五条测试数据及其预期结果,代码量会精简不少。