跳转到主要内容

Pytest插件,用于检测意外打开的文件句柄

项目描述

重要:0.6.0是最终发布版本。此软件包现在已存档,不再进行开发。

本软件包为pytest框架提供了一个插件,允许开发者检测单元测试结束时是否有任何文件句柄或其他类似文件的对象被意外地留下未关闭。由于它在更广泛的范围内有用,它已从核心astropy项目中移除。

重要:停用路线图

https://github.com/astropy/astropy/pull/14041起,此软件包不再用于astropy核心库。我们强烈建议任何仍在使用此软件包的包迁移到其他替代方案。当astropy 6.0版(预计2023年11月发布)发布时,核心库的所有活跃开发分支都不会再使用此软件包。

之后,我们将仅发布一次pytest-openfiles的最后版本,并将存档此存储库。

要测试不使用此软件包时打开的文件,您可以从命令行使用-W选项

pytest -W error::ResourceWarning

或者,您也可以使用pytest配置文件。以下示例适用于setup.cfg

[tool:pytest]
filterwarnings =
    error::ResourceWarning

有关如何在不使用此软件包的情况下测试打开文件的信息,请参阅https://docs.astropy.org/en/latest/development/testguide.html#testing-for-open-files,尤其是当您为astropy做出贡献时。

动机

pytest-openfiles插件允许检测单元测试结束时打开的I/O资源。这对于测试操作文件句柄或其他I/O资源的代码特别有用。它允许开发者确保当不再需要此类代码时,它正确地清理I/O资源。

安装

可以使用pip安装pytest-openfiles插件

$ pip install pytest-openfiles

您还可以从源存储库安装最新开发版本

$ git clone https://github.com/astropy/pytest-openfiles
$ cd pytest-openfiles
$ python ./setup.py install

在两种情况下,插件都将自动注册以与pytest一起使用。

用法

此插件为pytest命令添加了--open-files选项。当使用--open-files运行测试时,如果单元测试过程中打开了文件,但该文件在测试完成后没有关闭,则测试将失败。

在某些情况下,某些文件在测试之间预期将保持打开状态。为了防止这些文件导致测试失败,可以使用配置文件变量open_files_ignore忽略它们。此变量添加到包顶级setup.cfg文件的[tool:pytest]部分。

可以使用完整的文件名忽略文件

[tool:pytest]
open_files_ignore = "/home/user/monty/output.log"

您还可以忽略无论在文件系统中位于何处都具有特定名称的文件

[tool:pytest]
open_files_ignore = "output.log"

在此示例中,如果在测试完成后发现所有名为output.log的文件都保持打开状态,则会忽略它们。路径和文件名可以包含*和?作为通配符

[tool:pytest]
open_files_ignore = "*.ttf"

您还可以通过使用openfiles_ignore装饰器来忽略特定测试用例的打开文件

import pytest

@pytest.mark.openfiles_ignore
def test_open_file_and_ignore():
    """We want to ignore this test when checking for open file handles."""

测试函数不会被跳过,但由测试留下的任何打开的文件都将被此插件忽略。

开发状态

CI Status

有关问题、错误报告和功能请求,可以在github上提交。

许可证

此插件采用3条款BSD风格许可 - 请参阅LICENSE.rst文件。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分布

pytest_openfiles-0.6.0.tar.gz (9.0 kB 查看哈希值)

上传时间 源代码

构建分布

pytest_openfiles-0.6.0-py3-none-any.whl (7.2 kB 查看哈希值)

上传时间 Python 3

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面