8
我有一個python文件a.py
,它包含兩個類A
和B
。Python返回MagicMock對象而不是return_value
class A(object):
def method_a(self):
return "Class A method a"
class B(object):
def method_b(self):
a = A()
print a.method_a()
我想用嘲諷A
到單元測試中B
類method_b
。下面是該文件testa.py
爲此目的內容:
import unittest
import mock
import a
class TestB(unittest.TestCase):
@mock.patch('a.A')
def test_method_b(self, mock_a):
mock_a.method_a.return_value = 'Mocked A'
b = a.B()
b.method_b()
if __name__ == '__main__':
unittest.main()
我希望得到Mocked A
輸出。但我得到的是:
<MagicMock name='A().method_a()' id='4326621392'>
我在哪裏做錯了?
測試時,'A()'從'mock_A'(一個普通的'MagicMock',你沒有指定任何東西)返回'return_value',它不是類'A'的一個實例。您需要將'return_value'設置爲具有已定義的'method_a'的東西。 – jonrsharpe
mock_a.method_a.return_value ='Mocked A'=> mock_a()。method_a.return_value ='Mocked A'應該更好:) –
@AliSAIDOMAR正好是正確的,它是調用'mock_a'的返回值,應該有方法,而不是'mock_a'本身。 – jonrsharpe