我正在编写读取文件并根据该文件的内容创建字典的代码。代码非常简单,但是我想测试边缘情况。
这是我的尝试:
from tempfile import NamedTemporaryFile
from nose.tools import *
def read_file(filename):
with open(filename) as f:
my_dict = { dict(line.strip().split(',')) for line in f }
return my_dict
def test_read_file():
file_contents = b"""Hello,World"""
with NamedTemporaryFile() as fp:
fp.write(file_contents)
my_dict = read_file(fp.name)
print(my_dict)
assert my_dict == { "Hello" : "World" }
不幸的是,这个断言失败了,因为它my_dict
是一个空字典。
我的理解是,一旦NamedTemporaryFile
被关闭,它被摧毁,所以我不希望它被破坏,直到直接后read_file
的my_dict
填充。fp
被打开了两次:一次是写作,一次是阅读-这是麻烦制造者吗?
这是测试读取文件功能的正确方法吗?如果是这样,为什么我的主张失败了?如果没有,那么编写此测试的更好的机制是什么?
您需要刷新写入以确保在读取数据之前已写入数据。
def test_read_file():
file_contents = b"""Hello,World"""
with NamedTemporaryFile() as fp:
fp.write(file_contents)
fp.flush()
my_dict = read_file(fp.name)
print(my_dict)
assert my_dict == { "Hello" : "World" }
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句