のMagicMockオブジェクトを返します。は、Pythonは、私は二つのクラス<code>A</code>と<code>B</code>が含まれているPythonのファイル<code>a.py</code>を持っている代わりに、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
をunittestのしたいと思います。ここでは、この目的のためにファイル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()'は、 'Aock'クラスのインスタンスではない' mock_A'(通常の 'MagicMock'、他に何も指定していないので)から' return_value'を返します。あなたは ''定義されmethod_a'を持っているものであることをreturn_value'ことを設定する必要があります。 – jonrsharpe
mock_a.method_a.return_value = 'Mocked A' => mock_a()。method_a.return_value = 'Mocked A'はより良くなるはずです。 –
@AliSAIDOMARは正確に正しいです、 'mock_a'を呼び出すときの戻り値です。メソッドであり、 'mock_a'自体ではありません。 – jonrsharpe