Skip to main content

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

项目描述

这个包为pytest框架提供了一个插件,允许开发人员检测是否有任何文件句柄或其他类似文件的对象在单元测试结束时无意中打开。它已从核心astropy项目中移出,因为它更普遍使用。

动机

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

安装

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

$ pip install pytest-openfiles

也可以从源存储库安装最新的开发版本:

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

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

用法

此插件将--open-files选项添加到pytest命令。使用--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 状态

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

执照

这个插件是根据 3 条款 BSD 风格的许可证获得许可的 - 请参阅 LICENSE.rst文件。

项目详情


下载文件

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

源分布

pytest-openfiles-0.5.0.tar.gz (8.3 kB 查看哈希)

已上传 source

内置分布

pytest_openfiles-0.5.0-py3-none-any.whl (6.5 kB 查看哈希

已上传 py3