Python 如何避免单元测试中的代码重复
假设我有一个名为“阶乘”的函数,我想测试这个函数。我经常发现自己在重写单元测试,如下图所示,在这里我定义了一些测试用例,可能包括一些边缘用例,运行所有这些测试。这个通用模式定义了测试值和预期输出,并对它们运行了测试,这给我留下了以下样板代码。本质上,我希望有一个函数,我将测试值列表和期望值列表以及测试它的函数传递给它,并让框架为我处理其余的部分。这样的事情存在吗?什么会反对这种简化的方法Python 如何避免单元测试中的代码重复,python,unit-testing,testing,Python,Unit Testing,Testing,假设我有一个名为“阶乘”的函数,我想测试这个函数。我经常发现自己在重写单元测试,如下图所示,在这里我定义了一些测试用例,可能包括一些边缘用例,运行所有这些测试。这个通用模式定义了测试值和预期输出,并对它们运行了测试,这给我留下了以下样板代码。本质上,我希望有一个函数,我将测试值列表和期望值列表以及测试它的函数传递给它,并让框架为我处理其余的部分。这样的事情存在吗?什么会反对这种简化的方法 导入单元测试 类TestRecursionAlgorithms(unittest.TestCase): de
导入单元测试
类TestRecursionAlgorithms(unittest.TestCase):
def测试因数(自):
输入_值=[1,2,3,4,5]
解决方案=[1,2,6,24,120]
对于枚举(zip(输入值,解决方案))中的idx(输入值,预期的解决方案):
使用self.subTest(test_case=idx):
self.assertEqual(预期解,阶乘(输入值))
干杯您可以使用此选项的变体
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}
看见