gpt4 book ai didi

python - 让 Python 测试认为已安装的包不可用

转载 作者:行者123 更新时间:2023-12-03 14:15:48 25 4
gpt4 key购买 nike

我有一个测试,可确保在所需的包不可用时引发特定的(有用的)错误消息。

def foo(caller):
try:
import pkg
except ImportError:
raise ImportError(f'Install "pkg" to use {caller}')
pkg.bar()

with pytest.raises(ImportError, match='Install "pkg" to use test_function'):
foo('test_function')

但是, pkg通常可用,因为其他测试依赖它。
目前,我设置了一个没有 pkg 的附加虚拟环境。只是为了这个测试。这似乎有点矫枉过正。

是否可以在模块或函数中“隐藏”已安装的包?

最佳答案

我最终得到了以下仅 pytest 的解决方案,它在设置更大的项目时似乎更加健壮。

import builtins
import pytest


@pytest.fixture
def hide_available_pkg(monkeypatch):
import_orig = builtins.__import__

def mocked_import(name, *args, **kwargs):
if name == 'pkg':
raise ImportError()
return import_orig(name, *args, **kwargs)

monkeypatch.setattr(builtins, '__import__', mocked_import)


@pytest.mark.usefixtures('hide_available_pkg')
def test_message():
with pytest.raises(ImportError, match='Install "pkg" to use test_function'):
foo('test_function')

关于python - 让 Python 测试认为已安装的包不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60227582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com