2

次のようなテストがいくつかあるとしましょう。

class TestMyTest(unittest.TestCase):

    def SetUpClass(cls):
        cls.my_lib = MyLib()

    def my_first_test(self):
        self.my_lib.my_function = Mock(return_value=True)
        self.assertTrue(self.my_lib.run_my_function(), 'my function failed')

    def my_second_test(self):
        # Some other test that calls self.my_lib.my_function...

そして、MyLib に次のようなものがあるとしましょう:

class MyLib(Object):

    def my_function(self):
        # This function does a whole bunch of stuff using an external API
        # ...

    def run_my_function(self):
        result = self.my_function()
        # Does some more stuff
        # ...

my_first_test では、my_lib.my_function をモックし、関数が実行されると True を返します。この例では、my_lib.my_function を呼び出す同じライブラリの別の関数である run_my_function() を呼び出しています。しかし、 my_second_test が実行されると、モックされた関数が呼び出されるのではなく、実際の関数が呼び出されます。したがって、my_first_test を実行した後、おそらく TeaDown() の実行中に、何らかの方法でモックを破棄する必要があると思います。どうすればそのモックを破壊できますか?

申し訳ありませんが、元の質問を編集して詳細を追加しました。

4

2 に答える 2

1

モックを破壊することはできません。再割り当てするか、別の方法でself.my_lib.my_function呼び出す必要があります。Mock(return_value=True)

1 つ目は、Patrick が示唆しているように思われるものです。

于 2014-06-16T16:24:14.357 に答える