Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何避免单元测试中的代码重复_Python_Unit Testing_Testing - Fatal编程技术网

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}
看见