unittest.mock をもっと理解しようとしていますが、プログラムを 2 回実行する理由がわかりません。簡単にするために、ファイル内の以下のコードを検討してtest.py
ください。
from unittest.mock import patch
class T():
def __init__(self):
self.setup()
def setup(self):
mock_testing = patch('test.testing').start()
mock_testing.return_value = "new testing"
def testing():
return "testing"
print("Hello")
t = T()
print("Setting up")
if testing() == "testing":
print("old style")
elif testing() == "new testing":
print("new style")
でスクリプトを実行するとpython test.py
、次のようになります。
Hello
Hello
Setting up
new style
Setting up
old style
コードを 2 回実行するのはなぜですか? そして、それが 2 回実行されたとしても、どうして「hello」が背中合わせに出力されるのでしょうか?
Hello
Setting up
new style
Hello
Setting up
old style
また、「新しいテスト」のモック値を使用して、コードを 1 回だけ実行するようにするにはどうすればよいですか?