我想测试一个 Python 函数,它读取一个 gzip 文件并从文件中提取一些东西(使用 pytest)。
import gzip
def my_function(file_path):
output = []
with gzip.open(file_path, 'rt') as f:
for line in f:
output.append('something from line')
return output
我可以创建一个像对象一样的 gzip 文件,我可以传递给
my_function
?该对象应已定义内容并应与 gzip.open()
一起使用我知道我可以在 fixture 中创建一个临时 gzip 文件,但这取决于文件系统和环境的其他属性。从代码创建类似文件的对象会更便携。
最佳答案
您可以使用 io
和 gzip
库来创建内存文件对象。例子:
import io, gzip
def inmem():
stream = io.BytesIO()
with gzip.open(stream, 'wb') as f:
f.write(b'spam\neggs\n')
stream.seek(0)
return stream
关于python - 为单元测试创建一个类似对象的 gzip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60436768/