0

我已经覆盖了 unittest.TestCase 类以包含一些像这样的附加功能

class TestCase(unittest.TestCase):
    def foo(self):
        return 4711

我将setUpClass在这样的测试用例中的调用中使用它

class MyTest(TestCase):
    @classmethod
    def setUpClass(cls):
        value = cls.foo() #1 
        value = MyTest.foo() #2
        value = MyTest().foo() #3
        value = TestCase().foo() #4

我无法访问foo()我在修改后的 unitest 类中实现的功能。

我可以看到尝试 #2 将失败,因为我尝试访问未实例化的类的方法,而 foo 不是类方法。我可以看到 try #1 也不起作用,因为我试图从 classmethod 级别访问非类方法(或者如何正确描述)。但是为什么尝试#3/#4 给我一个no such test method错误?

foo()如何在不使其成为类方法的情况下访问该方法(因为我无法更改它,因为它是外部的)?

4

1 回答 1

0

似乎是一个黑客,但它的工作原理:

TestCase.__dict__['foo'](None)
于 2012-10-28T10:37:37.723 回答