2

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 回だけ実行するようにするにはどうすればよいですか?

4

1 に答える 1