2013-12-10 5 views
2
def file_handling(): 
    temp_file = open("/root/temp.tmp", 'w') 
    temp_file.write("a") 
    temp_file.write("b") 

'열기'방법과 그 이후의 쓰기 문을 모의하는 방법은 무엇입니까? 솔루션을 온라인으로 확인했을 때, mock 라이브러리를 사용하여 mock_open을 사용하라는 제안이있었습니다. 여기 어떻게 활용할 수 있습니까?파이썬에서 'open'과 같은 내장 메소드를 조롱하는 법?

self.stubs.Set(__builtins__, "open", lambda *args: <some obj>) does not seem to work. 
+1

에 오신 것을 환영에 [그래서]. "가짜"란 무엇을 의미하며 어떤 방법으로 자신을 사용할 수 있습니까? –

+2

프로그래밍과 관련하여 "모의 (mock)"는 상당히 잘 정의되어 있으며 모호하지 않습니다. http://en.wikipedia.org/wiki/Mock_object – Tim

+0

@Tim, dm03514, Qantas 94 Heavy Thank you 얘들 아. – chinmay

답변

1

는 음, mock 라이브러리를 사용하여, 나는이 (테스트하지) 작업을해야한다고 생각 :

import mock 
from unittest2 import TestCase 

class MyTestCase(TestCase): 
    def test_file_handling_writes_file(self): 
     mocked_open_function = mock.mock_open(): 

     with mock.patch("__builtin__.open", mocked_open_function): 
      file_handling() 

     mocked_open_function.assert_called_once_with('/root/temp.tmp', 'w') 
     handle = mocked_open_function() 
     handle.write.assert_has_calls() 
+0

답장을 보내 주셔서 감사합니다. assert_has_calls()는 적어도 2 개의 인수 (주어진 1) 여기서 mock.call 값은 무엇입니까? – chinmay

관련 문제