fixtures
#
Conda 测试中使用的 pytest fixture 集合。
类#
函数#
抑制未关闭的套接字警告 |
|
|
|
此 Fixture 将 “context.number_channel_notices” 设置为 0,然后再设置 |
|
在每个测试函数运行后重置上下文对象。 |
|
|
用于将包或索引缓存与其他测试隔离。 |
一个参数化的 fixture,将求解器后端设置为 (1) libmamba |
|
|
|
|
|
|
|
|
|
|
一个函数作用域的 fixture,返回 CondaCLIFixture 实例。 |
|
一个会话作用域的 fixture,返回 CondaCLIFixture 实例。 |
|
一个函数作用域的 fixture,返回 PathFactoryFixture 实例。 |
|
一个函数作用域的 fixture,返回 TmpEnvFixture 实例。 |
|
一个会话作用域的 fixture,返回 TmpEnvFixture 实例。 |
|
一个函数作用域的 fixture,返回 TmpChannelFixture 实例。 |
|
一个 monkeypatch fixture,在每次测试后重置上下文。 |
|
一个函数作用域的 fixture,返回一个临时包缓存目录。 |
|
一个函数作用域的 fixture,返回一个临时环境目录。 |
我们需要设置这个,以便 Python 加载 'conda' 的开发版本,通常取自 |
属性#
- suppress_resource_warning()#
抑制未关闭的套接字警告
似乎 urllib3 为了避免代价高昂的重建成本而保持套接字打开。
- tmpdir(tmpdir, request)#
- clear_subdir_cache()#
- disable_channel_notices()#
此 Fixture 将 “context.number_channel_notices” 设置为 0,然后再将其设置回原始值。
这也是一个关于如何覆盖上下文对象中的值的好例子。
- reset_conda_context()#
在每个测试函数运行后重置上下文对象。
- temp_package_cache(tmp_path_factory)#
用于将包或索引缓存与其他测试隔离。
- parametrized_solver_fixture(request: pytest.FixtureRequest, monkeypatch: pytest.MonkeyPatch) collections.abc.Iterable[Literal[libmamba, classic]] #
一个参数化的 fixture,为每个测试将求解器后端设置为 (1) libmamba 和 (2) classic。它使用 autouse=True,因此只在实际需要的模块中导入它。
请注意,跳过和 xfail 需要在测试主体 _内部_ 完成。装饰器不能使用,因为它们在 fixture 完成其工作之前就被评估了!
所以,与其
@pytest.mark.skipif(context.solver == "libmamba", reason="...") def test_foo()
...
不如
- def test_foo()
- if context.solver == "libmamba"
pytest.skip("...")
...
- solver_classic(request: pytest.FixtureRequest, monkeypatch: pytest.MonkeyPatch) collections.abc.Iterable[Literal[classic]] #
- solver_libmamba(request: pytest.FixtureRequest, monkeypatch: pytest.MonkeyPatch) collections.abc.Iterable[Literal[libmamba]] #
- Solver#
- _solver_helper(request: pytest.FixtureRequest, monkeypatch: pytest.MonkeyPatch, solver: Solver) collections.abc.Iterable[Solver] #
- session_capsys(request) collections.abc.Iterator[_pytest.capture.MultiCapture] #
- class CondaCLIFixture#
- capsys: pytest.CaptureFixture | _pytest.capture.MultiCapture#
- __call__(*argv: str | os.PathLike | pathlib.Path, raises: type[Exception] | tuple[type[Exception], Ellipsis]) tuple[str, str, pytest.ExceptionInfo] #
- __call__(*argv: str | os.PathLike | pathlib.Path) tuple[str, str, int]
测试 conda CLI。模拟 conda.cli.main.main 中的操作。
conda ... == conda_cli(...)
- 参数:
argv -- 要解析的参数。
raises -- 要拦截的预期异常。如果提供,将返回引发的异常,而不是退出代码(请参阅 pytest.raises 和 pytest.ExceptionInfo)。
- 返回值:
命令结果(stdout、stderr、退出代码或 pytest.ExceptionInfo)。
- conda_cli(capsys: pytest.CaptureFixture) collections.abc.Iterator[CondaCLIFixture] #
一个函数作用域的 fixture,返回 CondaCLIFixture 实例。
对于任何当前测试本地的命令(例如,创建一个仅在测试中使用的 conda 环境),请使用此项。
- session_conda_cli(session_capsys: _pytest.capture.MultiCapture) collections.abc.Iterator[CondaCLIFixture] #
一个会话作用域的 fixture,返回 CondaCLIFixture 实例。
对于任何测试会话全局的命令(例如,创建一个跨测试共享的 conda 环境、conda info 等),请使用此项。
- class PathFactoryFixture#
- tmp_path: pathlib.Path#
- path_factory(tmp_path: pathlib.Path) collections.abc.Iterator[PathFactoryFixture] #
一个函数作用域的 fixture,返回 PathFactoryFixture 实例。
使用此项为测试生成任意数量的临时路径,这些路径是唯一的且尚不存在。
- class TmpEnvFixture#
- path_factory: PathFactoryFixture | pytest.TempPathFactory#
- conda_cli: CondaCLIFixture#
- get_path() pathlib.Path #
- __call__(*packages: str, prefix: str | os.PathLike | None = None) collections.abc.Iterator[pathlib.Path] #
生成一个包含所提供软件包的 conda 环境。
- 参数:
packages -- 要安装到环境中的软件包
prefix -- 安装 conda 环境的前缀
- 返回值:
conda 环境的前缀
- tmp_env(path_factory: PathFactoryFixture, conda_cli: CondaCLIFixture) collections.abc.Iterator[TmpEnvFixture] #
一个函数作用域的 fixture,返回 TmpEnvFixture 实例。
当创建仅限于当前测试的 conda 环境时使用此项。
- session_tmp_env(tmp_path_factory: pytest.TempPathFactory, session_conda_cli: CondaCLIFixture) collections.abc.Iterator[TmpEnvFixture] #
一个会话作用域的 fixture,返回 TmpEnvFixture 实例。
当创建跨测试共享的 conda 环境时使用此项。
- class TmpChannelFixture#
- path_factory: PathFactoryFixture#
- conda_cli: CondaCLIFixture#
- __call__(*packages: str) collections.abc.Iterator[tuple[pathlib.Path, str]] #
- tmp_channel(path_factory: PathFactoryFixture, conda_cli: CondaCLIFixture) collections.abc.Iterator[TmpChannelFixture] #
一个函数作用域的 fixture,返回 TmpChannelFixture 实例。
- context_aware_monkeypatch(monkeypatch: pytest.MonkeyPatch) pytest.MonkeyPatch #
一个 monkeypatch fixture,在每次测试后重置上下文。
- tmp_pkgs_dir(path_factory: PathFactoryFixture, mocker: pytest_mock.MockerFixture) collections.abc.Iterator[pathlib.Path] #
一个函数作用域的 fixture,返回一个临时包缓存目录。
- tmp_envs_dir(path_factory: PathFactoryFixture, mocker: pytest_mock.MockerFixture) collections.abc.Iterator[pathlib.Path] #
一个函数作用域的 fixture,返回一个临时环境目录。
- PYTHONPATH()#
我们需要设置这个,以便 Python 加载 'conda' 的开发版本,通常取自克隆仓库根目录中的 conda/。此根目录通常是运行 pytest 时的工作目录。否则,它将导入安装在基础环境中的版本,该版本可能没有被 pip install -e . --no-deps 覆盖。这在其他测试中不会发生,因为它们以等效于 python -m conda 的方式运行。然而,一些测试直接运行 conda(shell 函数),它调用 conda(Python 入口点)。当以这种方式调用脚本时,它会绕过在 python -m 样式调用中找到的自动“工作目录优先于 sys.path”的行为。有关详细信息,请参阅 https://docs.pythonlang.cn/3/library/sys_path_init.html。