2017-04-23 18 views
1

私は類似の投稿があることを知っていますが、このようなものは見つかりませんでした。Python:テスト関数のモックファイル入力

私は入力として読み込みと処理を行い、何かを返す関数をPythonで持っています。私はその関数の出力をテストしたいと思います。例:

読み込みファイルを書き込まなくてもこの機能をテストするにはどうすればよいでしょうか?

これは私が同じ質問に苦労した(http://www.voidspace.org.uk/python/mock/helpers.html#mock-open

答えて

0

必要なものをエミュレートすることが分かっ最も近かった、以下の私の答えを見つけてください。このうちのほとんどは http://omiron.ro/post/python/how_to_mock_open_file/です。 私はPython 3.6とPy.testをEclipseのpydevプラグインで使用しました。

import unittest.mock as mock 
from unittest.mock import mock_open 

#main function 
def myfunction(filename): 
    f=open(filename) 
    maximum = 0 
    for line in f: 
     if maximum < len(line): 
      maximum = len(line) 
     pass 
    f.close() 
    return maximum 

#test function for the main function 
@mock.patch('builtins.open', new_callable=mock_open, create=True) 
def test_myfunction(mock_open): 
    mock_open.return_value.__enter__ = mock_open 
    mock_open.return_value.__iter__ = mock.Mock(
     return_value = iter(['12characters', '13_characters'])) 
    answer = myfunction('foo') 
    assert not answer == 12 
    assert answer == 13 
関連する問題