跳转到主要内容

用于控制远程数据访问的pytest插件。

项目描述

10.5281/zenodo.5796951 CI Status

本软件包提供了一个用于 pytest 框架的插件,允许开发者控制需要从互联网获取数据的单元测试。它最初是 astropy 核心包的一部分,但为了更广泛的使用,已被移至独立的包中。

动机

许多软件包提供需要从互联网获取数据的功能。这些功能需要测试,但访问互联网的单元测试可能会主导整个测试套件的运行时间。

pytest-remotedata 插件允许开发者指明哪些单元测试需要访问互联网,并控制何时以及是否将这些测试作为测试套件运行的任何给定运行的一部分执行。

安装

可以使用 pip 安装 pytest-remotedata 插件。

$ pip install pytest-remotedata

还可以从源代码库安装最新版本的开发版本。

$ git clone https://github.com/astropy/pytest-remotedata
$ cd pytest-remotedata
$ pip install .

在任何情况下,插件都将自动注册以用于 pytest

使用

安装此插件使得 pytest 可用两个装饰器

  • remote_data 用于标记需要从互联网获取数据的测试

  • internet_off 用于标记仅在禁用互联网访问时运行的测试

这些装饰器可以使用 @pytest.mark 标记测试函数、方法和类。例如,考虑以下需要从互联网获取数据的测试函数:

import pytest
from urllib.request import urlopen

@pytest.mark.remote_data
def test_remote_data():
    urlopen('https://astropy.org')

使用 @pytest.mark.remote_data 标记 test_remote_data 函数,向 pytest 指示仅在明确请求远程数据源时运行此测试。

当此插件安装后,--remote-data 命令行选项被添加到 pytest 命令行界面。

默认行为是跳过标记为 remote_data 的测试。如果未提供 pytest 命令的 --remote-data 选项,或提供了 --remote-data=none,则所有标记为 remote_data 的测试都将被跳过。所有标记为 internet_off 的测试都将执行。

有时检查某些测试是否意外访问互联网是有用的。可以通过在测试包的 setup.cfg 文件中设置 remote_data_strict = true 来启用严格的远程数据访问检查。如果启用此选项,任何尝试访问网络但未标记为 @pytest.mark.remote_data 的测试都将失败。

pytest 命令行界面提供 --remote-data 选项或 --remote-data=any 将导致所有标记为 remote-data 的测试执行。任何标记为 internet_off 的测试将被跳过。

仅运行标记为 remote_data 的测试,使用内置的 pytest 机制,例如 pytest -m remote_data --remote-data

仅运行从 Astropy 数据源接收远程数据的测试,使用 --remote-data=astropy 运行测试。具有其他数据源的测试将被跳过。这可以在测试代码中通过标记测试函数为 @pytest.mark.remote_data(source='astropy') 来表示。

未来,除了astropy之外,我们打算支持一种可配置的方式来指示特定的远程数据源。

开发状态

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

许可

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

项目详情


下载文件

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

源代码分发

pytest-remotedata-0.4.1.tar.gz (13.3 kB 查看哈希值)

上传时间 源代码

构建版本

pytest_remotedata-0.4.1-py3-none-any.whl (8.6 kB 查看哈希值)

上传时间 Python 3

支持者