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 クラスに実装した関数にアクセスできません。

インスタンス化されていないクラスのメソッドにアクセスしようとしていて、foo がクラスメソッドではないため、#2 の試行が失敗することがわかります。クラスメソッドレベルから非クラスメソッドにアクセスしようとしているため (またはこれが正しく記述されている方法)、try #1 も機能しないことがわかります。しかし、#3/#4 を試すとなぜno such test methodエラーが発生するのでしょうか?

foo()メソッドをクラスメソッドにせずにメソッドにアクセスするにはどうすればよいですか(これは外部のものであるため変更できないため)。

4

1 に答える 1

0

ハックのようですが、動作します:

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