2016-10-22 17 views
1

私はPythonで組み込みソフトウェアコードの単体テストを書いています。Python単体テストで特定のファイルの存在を擬似する方法は?

ファイルの1つにの特定のファイルが存在する必要があります。 (例: "/dir_name/file_name.txt")、それ以外の場合はエラーが発生します。

通常、このファイルはハードウェアデバイス上に存在し、Pythonコードはこのファイルを読み取ります。 Pythonコードの単体テストを書くときに、ファイルの存在をどうやって模擬することができますか?

tempfile.mkstemp()正確なパス/ファイル名が生成されていないようです。これは/dir_name/file_name.txtです。それは常にいくつかのランダムな文字を追加します。

これはPython3.4にあります。 unittest.mockでこれを達成することは可能ですか?

+0

実際には*この*が必要ですか?または、あなたが何をテストしているかを考えるために、あなたがそれを模擬する方法を尋ねていますか?それは存在すると思いますか?あなたのコードのサンプルとあなたは何をテストしていますか?私はアイディアを持っていると思うが、あなたの現在のアプローチが何であるかを見たいと思う。 – idjaw

+0

いいえ、存在する必要はありません。私のコードにファイルが存在することを確認できれば、それは問題ありません。 – sh0731

+0

優れています。あなたは、ソリューションに対応する方法を知るためのコードをいくつか表示できますか?ここにはさまざまなオプションがありますが、より適切なソリューションを提供する方法を知ることが現在のアプローチであることを知ることは素晴らしいことです。 – idjaw

答えて

0

ファイルを作成および削除するコンテキストマネージャを作成できます。

from contextlib import contextmanager 

@contextmanager 
def mock_file(filepath, content=''): 
    with open(filepath, 'w') as f: 
     f.write(content) 
    yield filepath 
    try: 
     os.remove(filepath) 
    except Exception: 
     pass 


def test_function(): 
    with mock_file(r'/dirname/filename.txt'): 
     function() 
関連する問題