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/fjhL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录