gpt4 book ai didi

python - python 中的单元测试 : ignore an import from the code I want to test

转载 作者:行者123 更新时间:2023-11-28 18:55:26 25 4
gpt4 key购买 nike

我有一个导入 pythoncom 的 python 程序(并从中使用 pythoncom.CoCreateInstance)。我想在不导入 pythoncom 的情况下为程序逻辑创建单元测试(这样我也可以在 Linux 上运行测试)。

有哪些选择?我可以在不修改被测系统的情况下完成吗?

到目前为止我发现了什么:

sys.modules["pythoncom"] = "test"
import module_that_imports_pythoncom

我的问题是如果我有:

from pythoncom.something import something

我会得到:

ImportError: No module named something.something

sys.modules["something.something"]sys.modules["pythoncom.something.something"] 不起作用。

有什么想法吗?

最佳答案

如果您需要运行测试并且它们实际上是依赖于操作系统的,您可能想要使用这些装饰器,例如:

def run_only(func, predicate):
if predicate():
return func
else:
def f(*args, **kwargs): pass
return f


def run_only_for_linux(func):
pred = lambda: sys.platform == 'linux2'
return run_only(func, pred)


@run_only_for_linux
def hello_linux():
"""docstring"""
print("hello linux")

通过这种方式,您可以声明测试仅在 linux 上运行,而不会在测试本身中增加丑陋的复杂性。

关于python - python 中的单元测试 : ignore an import from the code I want to test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3045657/

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