我正在测试一个函数,作为其执行的一部分,它会腌制对象。测试之后,我要删除泡菜文件。
如果测试本身可以保存文件,则pytest
的“ tmpdir”固定装置似乎是解决方案。但是,由于正在测试的功能是已保存文件的创建者,而不是测试的创建者,所以我不确定在测试后清除文件的正确方法是什么。
在这种情况下,文件被保存在包含正在运行的测试的“ tests”目录中。我能想到的唯一选择是在每次测试后从测试目录中删除所有* .pkl泡菜文件。我想知道我是否缺少pytest可能提供的更优雅的解决方案。
清理作为pytest
测试功能的副作用而生成的任何文件的标准方法是什么?
答案 0 :(得分:2)
您可以使用monkeypatch文件打开功能并检查是否写入了新文件。在列表中收集新文件。然后,浏览列表并删除文件。示例:
bEnd true
根据您要测试的功能,用猴子补丁# spam.py
import pathlib
import numpy
def plain_write():
with open('spam.1', 'w') as f:
f.write('eggs')
def pathlib_write():
with pathlib.Path('spam.2').open('w') as f:
f.write('eggs')
def pathlib_write_text():
pathlib.Path('spam.3').write_text('eggs')
def pathlib_write_bytes():
pathlib.Path('spam.3').write_bytes(b'eggs')
def numpy_save():
numpy.save('spam.4', numpy.zeros([10, 10]))
def numpy_savetxt():
numpy.savetxt('spam.5', numpy.zeros([10, 10]))
可能还不够:例如,要清理用builtins.open
编写的文件,您还需要另外猴子补丁pathlib
。
io.open