2014-11-18 2 views
0

나는 테스트 케이스 같이 있습니다내부 통화 모의 방법 (xlwt)?

@mock.patch('xlwt.Workbook.Workbook.save') 
    def test_Generic_send_test_email_address(self, workspace_mock): 
     workspace_mock.return_value = None 
     oi = OptinInvitesGeneric() 
     oi.compute(...) 
     self.assert ... 

실제 방법은 몇 가지 처리를 수행하고 엑셀 스프레드 시트에 결과를 저장합니다.

class OptinInvitesGeneric(OptinBase): 
    def compute(...): 
     ... 
     wb = excel_tool.write_xls(...) 
     wb.save('{0}.xls'.format(category)) 

내 모의 패치가 workbook.save()를 인계하지 않는 것 같습니다. 내가 놓친 게 뭐야?

+0

왜 발생하지 말합니까? 'save()'모의 호출을 체크하는 assert는 어디에 있는가? 'wb'가 'xlwt.Workbook.Workbook' 인스턴스입니까? –

+0

PyCharm으로 디버깅합니다. 네, 확실히 모의 인스턴스가 아닙니다. – Houman

+0

아마도 @Vincent가'xlwt.Workbook' 인스턴스라고 말합니다. –

답변

1

난 당신이 xlwt.Workbook.Workbook 패치를하려는 이유는 모르겠지만, 나를 위해이 두 작업 :

@patch.object(xlwt.Workbook, 'save', return_value=None) 
def test_patch_object(mock): 
    wb = xlwt.Workbook() 
    assert wb.save() == None 

@patch('xlwt.Workbook.save', return_value=None) 
def test_patch(mock): 
    wb = xlwt.Workbook() 
    assert wb.save() == None 
+0

'mock.patch'와 mock che 메소드 정의를 사용할 수 있다고 생각합니다. 진짜 문제는 그가 'xlwt.Workbook' 대신'xlwt.Workbook.Workbook'을 조롱했다는 것입니다. –

+0

사실! 나는 그 대답을 편집했다. – Vincent