Python Unittest 参数化测试:高效测试代码
参数化测试是一种在单元测试中使用不同输入数据的方法。它允许你在测试用例中使用多组输入数据,以便测试代码的不同行为和输出。参数化测试使得单元测试更加灵活和高效,因为你不需要为每个测试情景编写独立的测试用例。
在 unittest 中,参数化测试可以使用 TestCase 类中的装饰器 '@parameterized' 来实现。这个装饰器可以将测试方法转换为参数化测试方法,允许你为测试方法提供多组参数数据。参数化测试方法中的每个参数都会被当作一个单独的测试用例来运行。
例如,你可以创建一个测试类,其中包含一个测试方法和多组参数数据:
import unittest
from parameterized import parameterized
class TestMath(unittest.TestCase):
@parameterized.expand([
('add', 2, 3, 5),
('subtract', 7, 2, 5),
('multiply', 5, 5, 25),
('divide', 10, 2, 5),
])
def test_math(self, name, a, b, expected):
if name == 'add':
result = a + b
elif name == 'subtract':
result = a - b
elif name == 'multiply':
result = a * b
elif name == 'divide':
result = a / b
self.assertEqual(result, expected)
在上面的示例中,我们使用了 parameterized.expand 装饰器来为测试方法提供多组参数数据。每个参数都是一个元组,其中包含测试名称、参数和预期结果。在测试方法中,我们使用 if 语句来根据测试名称执行不同的操作,并使用 assertEqual 断言来检查结果是否与预期结果相等。
当运行这个测试类时,它将会运行 4 个测试用例,分别对应不同的测试名称和参数数据。这使得你可以轻松地测试所有的数学操作,同时避免了编写重复的测试用例的麻烦。
原文地址: https://www.cveoy.top/t/topic/oaNY 著作权归作者所有。请勿转载和采集!