2017-06-23 3 views
-1

以下は私のコードです:myfunction()をテストする必要があります。ファイルの模擬機能を作成する方法。一時ファイル用のモックオブジェクトの作成方法NamedTemporaryFileまたはオブジェクトのようなファイル

def myfunction(self): 
    with tempfile.NamedTemporaryFile() as tf: 
     f.seek(0) 
     tf.write(f.read()) 
     tf.flush() 
     ocr_content_dict = self.ocr.ocr_document(tf.name, mimetype) or '' 
     ocr_content = ocr_content_dict['content'] 

答えて

0

あなたはモックファイルオブジェクトを作成することもできますし、また、使用することができBytesIO/StringIO

from io import BytesIO 

class MockFileObject(object): 
    ''' 
     write mock functions for any that are needed 
     DONE: read 
     TODO: write 
     TODO: seek 
     TODO: fileno 
     TODO: flush 
     TODO: name 

     with context manangement use the dunder enter/exit 
     TODO: __enter__ 
     TODO: __exit__ 

     ... etc 
    ''' 

    def read(self): 
     ''' example mock ''' 
     return BytesIO('some stuff').read() 

使用法:

fo = MockFileObject() 
with fo as f: 
    print(f.read()) 

考え出力(未テスト):

some stuff 
+0

理解できませんあなたはより具体的でファイルを模倣する方法をexpalinすることができますobjext –

+0

@ChetanKabraすべてのTODOは、ファイルオブジェクトを完全に模擬するために書き込まれる必要がある関数です。これは理にかなっていますか? – jmunsch

+0

それを得ましたが、これをmock_testでどのように使うか。私は一時ファイルを模倣したくないからです.NamedTemporaryFile()コンテキストマネージャとf.read()関数は、ファイルを返す別の関数を呼び出します –