当前位置: 首页 > 面试题库 >

Python unittest:以编程方式生成多个测试?

龚永新
2023-03-14
问题内容

我有一个要测试的函数under_test,和一组预期的输入/输出对:

[
(2, 332),
(234, 99213),
(9, 3),
# ...
]

我希望这些输入/输出对中的每一个都可以用自己的test_*方法进行测试。那可能吗?

这是我想要的,但是将每个输入/输出对强制进行单个测试:

class TestPreReqs(unittest.TestCase):

    def setUp(self):
        self.expected_pairs = [(23, 55), (4, 32)]

    def test_expected(self):
        for exp in self.expected_pairs:
            self.assertEqual(under_test(exp[0]), exp[1])

if __name__ == '__main__':
    unittest.main()

(此外,我是否真的想将self.expected_pairsin的定义放在setUp?)

更新: 尝试 doublep 的建议:

class TestPreReqs(unittest.TestCase):

    def setUp(self):
        expected_pairs = [
                          (2, 3),
                          (42, 11),
                          (3, None),
                          (31, 99),
                         ]

        for k, pair in expected_pairs:
            setattr(TestPreReqs, 'test_expected_%d' % k, create_test(pair))

    def create_test (pair):
        def do_test_expected(self):
            self.assertEqual(get_pre_reqs(pair[0]), pair[1])
        return do_test_expected


if __name__ == '__main__':
    unittest.main()

这是行不通的。运行0个测试。我是否对示例进行了错误的修改?


问题答案:

未经测试:

class TestPreReqs(unittest.TestCase):
    ...

def create_test (pair):
    def do_test_expected(self):
        self.assertEqual(under_test(pair[0]), pair[1])
    return do_test_expected

for k, pair in enumerate ([(23, 55), (4, 32)]):
    test_method = create_test (pair)
    test_method.__name__ = 'test_expected_%d' % k
    setattr (TestPreReqs, test_method.__name__, test_method)

我猜如果经常使用它,可以使用实用程序功能和/或装饰器来美化它。请注意,TestPreReqs在此示例中,对不是对象的属性(因此setUp消失了)。相反,它们在某种意义上是“硬连线”的TestPreReqs



 类似资料:
  • 问题内容: 给定2种rgb颜色和一个矩形区域,我想在这些颜色之间生成基本的线性渐变。我已经进行了快速搜索,唯一能够找到的是此Blog条目,但示例代码似乎丢失了,或者至少是在发布此信息之时。任何帮助,算法,代码示例,等等。这将用Java编写,但是显示层已经处理完毕,我只需要弄清楚如何弄清楚要显示的内容。 问题答案: 您需要在第一和第二种颜色之间进行插值。通过为每个分量(R,G,B)计算相同的插值,可

  • 问题内容: 我使用eclipse在最初独立于eclipse创建的应用程序上工作。因此,该应用程序的目录结构绝对不适合日食使用。 我想以编程方式为该应用程序生成一个项目。在和文件是很容易的弄清楚,我已经了解到,项目存储在工作区下 不幸的是,这里的某些文件(尤其是)似乎是以某种二进制格式编码的。直觉上,我尝试使用-没有骰子反序列化它。因此,它似乎不是序列化的Java对象。 我的问题是:有没有一种方法可

  • 问题内容: 有没有人使用基于Java的库来生成excel文档?最好支持2003年? 问题答案: 我目前正在使用非常全面的Apache POI(http://poi.apache.org/index.html)。2003文件格式版本仍处于beta版本,但似乎运行良好。我并没有很好地利用它的功能,只是对Excel进行简单的读写,但这似乎是可靠的。

  • 问题内容: 我有一个Dropwizard应用程序,需要为配置列表中的每个配置生成十几个bean。健康检查,石英计划程序等。 像这样: 我有多个MyConfiguration实例,都需要这样的bean。现在,我必须复制并粘贴这些定义,并为每个新配置重命名它们。 我可以以某种方式遍历我的配置类并为每个配置类生成一组bean定义吗? 我可以使用子类解决方案或任何类型安全的方法,而无需每次添加新服务时都复

  • 我已经从容器A复制了一个文件1.txt到容器b。 我还能够获得复制文件的完整URL,并能够在相同的浏览器选项卡中打开它,只要容器是公共的。 现在我正在使我的容器私有..我希望有一个简单的API可以给我SAS URL 有没有这样的API?

  • 问题内容: 我想为Java的玩具语言编写一个编译器。我想生成可运行的.class文件。我想知道执行此操作的最佳库或工具是什么?我知道我可以学习所有指令的二进制格式并建立自己的常量池等,但这似乎应该已经完成​​:没必要重新发明轮子,对吗? 在线搜索我发现了两种不同的Java汇编语言Jasmin和Jamaica,但是只有Jasmin看起来有所维护。 是否存在用于将字节码写入流的Java库?这是Apac