次のようなテストがいくつかあるとしましょう。
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() の実行中に、何らかの方法でモックを破棄する必要があると思います。どうすればそのモックを破壊できますか?
申し訳ありませんが、元の質問を編集して詳細を追加しました。