繁体   English   中英

如何避免单元测试中的代码重复

[英]How to avoid code duplication in unit tests

假设我有一个名为“阶乘”的 function,我想测试这个 function。 我经常发现自己重写单元测试,如下所示,我定义了一些测试用例,可能包括一些边缘用例,为所有这些运行测试。 这种通用模式定义了测试值和预期的 output 并在它们上运行测试给我留下了以下样板代码。 本质上,我想拥有一个function,我将测试值列表与预期值列表和 function 一起传递给它来测试它,并让框架为我处理 Z65E8800B5C6800AAD896F888B2A。 是否存在类似的东西,什么会反对这种简化的方法?

import unittest
class TestRecursionAlgorithms(unittest.TestCase):
    def test_factorial(self):
        input_values = [1, 2, 3, 4, 5]
        solutions = [1, 2, 6, 24, 120]

        for idx, (input_value, expected_solution) in enumerate(zip(input_values, solutions)):
            with self.subTest(test_case=idx):
                self.assertEqual(expected_solution, factorial(input_value))

干杯

你可以使用这个的变体。

input_values = [1, 2, 3, 4, 5]
solutions = [1, 2, 6, 24, 120]
result = dict(zip(input_values, solutions)) # Key:Value
print(result)
match = {i: k for i, k in result.items() if i == k} # Key Value comparison
print(match)

结果:

{1: 1, 2: 2, 3: 6, 4: 24, 5: 120}
{1: 1, 2: 2}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM