Я новичок в python насмешливо. Я знаю, что мы можем использовать mock.patch для фальсификации f1 для тестирования f2. Например:Почему не удается напрямую обмануть объект в unittest?
def f1(x):
return x
def f2(x):
return f1(x) + 5
class ExampleTest(unittest.TestCase):
@mock.patch('__main__.f1')
def test_f2(self, mock_f1):
mock_f1.return_value = 0
self.assertEqual(f2(5), 5)
Но я обнаружил, что если я непосредственно издевался над f1 в тестовом примере, как показано ниже, он не работает. Я понятия не имею, почему просто не может просто издеваться над «f1» здесь?
class ExampleTest(unittest.TestCase):
def test_f2(self):
f1 = mock.Mock()
f1.return_value = 0
self.assertEqual(f2(5), 5)
Спасибо за ваше объяснение! –