Пытаюсь больше понять unittest.mock, но не уверен, почему он запускает программу дважды. Для простоты рассмотрим код ниже в файле 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
Почему он запускает код дважды? И даже если он запустит его дважды, почему «привет» печатается подряд, если он печатается так:
Hello
Setting up
new style
Hello
Setting up
old style
Кроме того, как я могу сделать так, чтобы он просто запускал код один раз с фиктивным значением «новое тестирование»?