【发布时间】:2016-06-16 00:36:34
【问题描述】:
我正在尝试对一段代码进行单元测试:
def _parse_results(self, file_name):
results_file = open(file_name)
results_data = list(csv.reader(results_file))
index = len(results_data[1])-1
results_file.close()
return float(results_data[1][index])
像这样使用 mock_open:
@mock.patch('path.open', mock.mock_open(read_data='test, test2, test3, test4'))
def test_parse_results(self):
cut = my_class(emulate=True)
self.assertEqual(VAL, cut._parse_results('file'))
我遇到的问题是我在运行 csv.reader 时没有得到任何数据。如果我运行 results_file.readlines() 我得到 'test, test2, test3, test4' 这意味着 mock_open 工作正常。但是当我运行 csv.reader(results_file) 时,我会丢失所有数据。
【问题讨论】:
-
我想这是因为csv实际上是一个_csv.c,一个编译后的c模块,所以看起来mocks没有被结转?