Python이 return_value 대신 MagicMock 개체를 반환합니다.
파이썬 파일을 가지고 있습니다.a.py
두 개의 클래스를 포함합니다.A
그리고.B
.
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()
유닛 테스트를 하고 싶습니다.method_b
수업 중에B
조롱하여A
파일의 내용은 다음과 같습니다.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'>
내가 어디서 잘못하고 있나요?
당신이@mock.patch('a.A')
당신은 수업을 대체하고 있습니다.A
시험 중인 암호로mock_a
.
인B.method_b
그런 다음 설정a = A()
지금은a = mock_a()
예를 들면a
그것은return_value
의mock_a
이 값을 지정하지 않았기 때문에 정규 값입니다.MagicMock
이것도 구성되지 않았으므로 기본 응답을 받습니다(또 다른 응답).MagicMock
) 메서드를 호출할 때 사용합니다.
대신 다음 중 하나를 수행할 수 있는 적절한 방법을 사용하도록 구성할 수 있습니다.
mock_a().method_a.return_value = 'Mocked A'
# ^ note parentheses
또는, 아마도 더 명시적으로:
mock_a.return_value.method_a.return_value = 'Mocked A'
당신의 코드는 그 사건에서 작동했을 것입니다.a = A
(인스턴스를 만들지 않고 클래스를 삭제), 다음과 같이a.method_a()
당신의 모의 수법을 촉발시켰을 겁니다
객체를 조롱하는 경우 다음 구문을 사용합니다.
@mock.patch.object(
a.A,
'method_a',
lambda a: "Mocked A")
def test_method_b(self):
b = a.B()
b.method_b()
이 경우 method_a는 람다 함수에 의해 조롱됩니다.
저의 경우, 저의 return_value는 다음과 같습니다.{"key1": "value1"}
그래서 저는 이것을 캐스팅할 필요가 있었습니다.dict()
패치를 적용하기 전에.
다음과 같이:
@fixture
def mock_something(mocker: MockFixture, request: SubRequest) -> MagicMock:
method_to_mock = f"your_module.YourClass.some_method"
return_value = dict(request.param)
if isinstance(return_value, Exception):
return mocker.patch(method_to_mock, side_effect=return_value)
return mocker.patch(method_to_mock, return_value=return_value)
언급URL : https://stackoverflow.com/questions/38199008/python-returns-magicmock-object-instead-of-return-value
'source' 카테고리의 다른 글
시스템에서 RVM(Ruby Version Manager)을 제거하는 방법 (0) | 2023.07.18 |
---|---|
스프링 부트를 사용하여 엑셀 파일을 읽는 방법 (0) | 2023.07.18 |
Pymongo를 사용하여 Mongodb의 연결 시간 제한을 설정하는 방법은 무엇입니까? (0) | 2023.07.18 |
네이티브 쿼리를 사용하여 스프링 데이터에서 사용자 지정 개체 반환 (0) | 2023.07.18 |
Python: 목록 요소 간의 차이점 찾기 (0) | 2023.04.24 |