作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个导入 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/
我是一名优秀的程序员,十分优秀!