2016-07-18 3 views
0

나는 unittest.mock.Mock 인스턴스 m이 있습니다. 내가 아는 유일한 것은 foo() 메서드를 사용하여 클래스를 조롱한다는 것입니다. m.foo.return_value이 설정되었는지 확인해야하며 그렇지 않은 경우 기본값을 제공해야합니다. 이것이 가능한가?unittest.mock.Mock에 return_value가 설정되어 있는지 확인하는 방법은 무엇입니까?

즉, has_return_value_set()을 구현하는 방법은 무엇입니까?

m = unittest.mock.Mock() 
# ... 
if not has_return_value_set(m.foo): 
    m.foo.return_value = MY_RETURN_VALUE 

는 내가 직접 m.foo.return_value을 확인하려했지만, 그것은 처음 접속시 새로운 모의 초기화됩니다.

표준이 아닌 반환 값을 설정 한 경우에는

답변

1

는만큼 당신이 실제로 아직 mock.return_value에 액세스하지 않은, 당신은 테스트 할 수 있습니다 : mock._mock_return_value가 설정되어있는 경우,

m.foo._mock_return_value is unittest.mock.DEFAULT 

당신이 mock.return_value 속성을 사용하는 순간 ~ unittest.mock.DEFAULT으로 변경하면 나중에 다시 사용할 수 있도록 인스턴스가 생성되어 mock._mock_return_value에 저장됩니다.

이 특성은 구현 세부 사항이므로 밑줄로 시작하는 이유입니다. 문서화되지 않았으므로 향후 릴리스에서 변경 될 수 있습니다. 그러나 현재 mock.return_value이 명시 적으로 설정되었는지 확인하는 다른 방법은 없습니다.

관련 문제