我知道有类似的帖子,但我没有找到类似这样的帖子。
我在python中有一个函数,它接收要读取的文件名作为输入并处理并返回一些东西,我想测试我的函数的输出。例如:
q3
如何创建模拟文件来测试此函数而无需编写读取文件?
这是我发现最接近我需要的东西(http://www.voidspace.org.uk/python/mock/helpers.html#mock-open)
答案 0 :(得分:0)
在遇到同样的问题后,请在下面找到我的答案。其中大部分来自: http://omiron.ro/post/python/how_to_mock_open_file/。 我通过Eclipse中的pydev插件使用了Python 3.6和Py.test。
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