python - 为单元测试创​​建一个类似对象的 gzip 文件

标签 python pytest

我想测试一个 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/

相关文章:

python - 将一个或多个初始位置提供给 scipy.optimize.differential_evolution

Python:如何将数据采样到测试和训练数据集中?

python - 如何在另一个模型中使用用户模型的过滤方法(django)

testing - 如何使用 Pytest 仅使用特定参数将测试标记为 xfail

python - 如何使用 autouse 全局定义补丁?

Python:Django:信号处理程序和主线程

python - 对多个 DataFrame 执行操作的最佳方法是什么?

selenium - Pytest Xdist 并行执行,防止重新创建数据库

python - pytest mysql 数据库 fixture : cannot create database

python - Django Rest Framework 无法修补 View 测试中的 Serializer(many=True).data