首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中的unittest :忽略我想要测试的代码中的导入

问python中的unittest :忽略我想要测试的代码中的导入
EN

Stack Overflow用户
提问于 2010-06-15 21:38:43
回答 3查看 2.5K关注 0票数 3

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

有哪些选项?我可以在不修改被测系统的情况下做到这一点吗?

到目前为止,我发现:

代码语言:javascript
复制
sys.modules["pythoncom"] = "test"
import module_that_imports_pythoncom

我的问题是,如果我有:

代码语言:javascript
复制
from pythoncom.something import something

我会得到:

代码语言:javascript
复制
ImportError: No module named something.something

而且sys.modules["something.something"]或sys.modules["pythoncom.something.something"]也不能工作。

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-15 21:41:18

您可以将import pythoncom放入try except块中。

票数 0
EN

Stack Overflow用户

发布于 2011-11-27 02:13:33

如果您需要运行测试,并且这些测试实际上依赖于操作系统,那么您可能希望使用这些装饰器,例如:

代码语言:javascript
复制
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上运行,而不会在测试本身中增加丑陋的复杂性。

票数 1
EN

Stack Overflow用户

发布于 2010-06-16 17:02:07

好的,如果您在测试中修改了PYTHONPATH,并在名为pythoncom的测试目录中的文件系统上创建了一个包含所需子目录的新包,会怎么样呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3045657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档