Unittest如何进行数据驱动测试?
时间: 2024-02-02 21:03:12 浏览: 22
unittest支持数据驱动测试,可以通过使用装饰器和测试数据集来实现。
首先,需要定义一个测试方法,并添加一个装饰器`@parameterized.expand`。这个装饰器接受一个参数,即测试数据列表,每个元素都是一个测试用例数据,通常为元组或字典。然后,在测试方法的参数中,需要定义与测试数据中每个元素对应的参数。最后,可以在测试方法中使用这些参数进行测试。
例如,假设要测试一个加法函数,测试数据集如下:
```
test_data = [
(1, 2, 3),
(0, 0, 0),
(-1, 1, 0),
(1.5, 2.5, 4),
('1', 2, None)
]
```
那么,可以使用如下代码进行数据驱动测试:
```
import unittest
def add(x, y):
return x + y
class TestAddFunction(unittest.TestCase):
@parameterized.expand(test_data)
def test_add(self, x, y, expected):
try:
result = add(x, y)
self.assertEqual(result, expected)
except TypeError:
self.assertIsNone(expected)
if __name__ == '__main__':
unittest.main()
```
在这个例子中,`test_add`方法有三个参数:`x`,`y`和`expected`。`@parameterized.expand`装饰器接受`test_data`列表作为参数,并将其展开成多个测试用例。在每个测试用例中,`x`和`y`的值分别从测试数据集中获取,而`expected`则是预期的结果。在测试方法中,使用`assertEqual`断言来比较实际结果和预期结果是否相等。对于无法进行加法操作的测试用例,使用`assertIsNone`断言来检查预期结果是否为`None`。
这样,就可以使用数据驱动测试来测试多组数据,而不需要编写多个测试方法。