Pytest:删除由测试功能创建的文件

时间:2018-08-08 01:11:29

标签: python pickle pytest

我正在测试一个函数,作为其执行的一部分,它会腌制对象。测试之后,我要删除泡菜文件。

如果测试本身可以保存文件,则pytest的“ tmpdir”固定装置似乎是解决方案。但是,由于正在测试的功能是已保存文件的创建者,而不是测试的创建者,所以我不确定在测试后清除文件的正确方法是什么。

在这种情况下,文件被保存在包含正在运行的测试的“ tests”目录中。我能想到的唯一选择是在每次测试后从测试目录中删除所有* .pkl泡菜文件。我想知道我是否缺少pytest可能提供的更优雅的解决方案。

清理作为pytest测试功能的副作用而生成的任何文件的标准方法是什么?

1 个答案:

答案 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