A
과 B
의 두 클래스를 포함하는 파이썬 파일 a.py
이 있습니다.파이썬은 return_value 대신 MagicMock 객체를 반환합니다.
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' ('Mick_A')에서'return_value'를 리턴합니다. 'return_value'를 정의 된'method_a'가있는 것으로 설정해야합니다. – jonrsharpe
mock_a.method_a.return_value = 'Mocked A'=> mock_a(). method_a.return_value = '조롱 된 A'는 더 좋아야합니다. :) –
@AliSAIDOMAR은 정확합니다. 'mock_a'를 호출했을 때의 반환 값입니다. 'mock_a '자체가 아니다. – jonrsharpe