Python 单元测试多个输入
Python unit testing multiple inputs
这是一个通用问题,专门针对 Python 中的单元测试。将 20 个或一定数量的输入作为键放入字典中进行测试是否可以接受,其中值是函数的预期结果输出?
网上一搜也没有找到答案。我读到的几乎所有内容都是玩具示例,例如添加数字以获得总和或连接名字和姓氏。以下是另一个玩具示例,以简单的方式描述我的问题。
import unittest
import some_module
class SomeModuleUnitTest(unittest.TestCase):
def test_some_function(self):
input_output_dict = {
1: 1,
2: 4,
3: 9,
4: 16,
5: 25,
6: 36,
7: 49,
.
.
.
20: 400
}
for input_case, output_expected in input_output_dict.items():
output_actual = some_module.some_function(input_case)
self.assertEqual(output_expected, output_actual)
如果这被认为是过时的,那么Python用于测试多个输入的 ic 解决方案是什么?
好的,我会去的。试图回答我在这里看到的明确和隐含的问题。
是pythonic吗?
如果那是您拥有的数据,那么将其放入字典当然可以。如果它变得非常大,您可以考虑从文件中读取它,但在这种情况下可能不需要这样做。
这是测试多个输入的最佳方式吗?。
不,在 pytest 中有可能 use test parametrization in test frameworks that provide output that is better organized than in your example. The most commonly used is probably the pytest.mark.parametrize
装饰器。
你的测试需要那么多不同的输入吗?
这取决于你的功能。如果每个输入都代表不同的场景,那肯定是的。如果它们代表相同的场景,您可能会想到典型情况和边缘情况,但通常您不需要很多不同的输入。
这是一个通用问题,专门针对 Python 中的单元测试。将 20 个或一定数量的输入作为键放入字典中进行测试是否可以接受,其中值是函数的预期结果输出?
网上一搜也没有找到答案。我读到的几乎所有内容都是玩具示例,例如添加数字以获得总和或连接名字和姓氏。以下是另一个玩具示例,以简单的方式描述我的问题。
import unittest
import some_module
class SomeModuleUnitTest(unittest.TestCase):
def test_some_function(self):
input_output_dict = {
1: 1,
2: 4,
3: 9,
4: 16,
5: 25,
6: 36,
7: 49,
.
.
.
20: 400
}
for input_case, output_expected in input_output_dict.items():
output_actual = some_module.some_function(input_case)
self.assertEqual(output_expected, output_actual)
如果这被认为是过时的,那么Python用于测试多个输入的 ic 解决方案是什么?
好的,我会去的。试图回答我在这里看到的明确和隐含的问题。
是pythonic吗? 如果那是您拥有的数据,那么将其放入字典当然可以。如果它变得非常大,您可以考虑从文件中读取它,但在这种情况下可能不需要这样做。
这是测试多个输入的最佳方式吗?。
不,在 pytest 中有可能 use test parametrization in test frameworks that provide output that is better organized than in your example. The most commonly used is probably the pytest.mark.parametrize
装饰器。
你的测试需要那么多不同的输入吗?
这取决于你的功能。如果每个输入都代表不同的场景,那肯定是的。如果它们代表相同的场景,您可能会想到典型情况和边缘情况,但通常您不需要很多不同的输入。