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 装饰器。

你的测试需要那么多不同的输入吗?
这取决于你的功能。如果每个输入都代表不同的场景,那肯定是的。如果它们代表相同的场景,您可能会想到典型情况和边缘情况,但通常您不需要很多不同的输入。