2016-10-24 62 views
0

单一功能我有一个项目的一个结构:存根模块

# A.py 
def foo(): 
    result = None 
    # some long, very long calculations 
    return result 

# B.py 
from A import foo 
def bar(): 
    result = foo() 
    # some not so long and complex calculations 
    return some_other_result 

# test.py 
import A 
import B 

def setup_module(): 
    A.foo = lambda: return "Hello" 

def test_foo(): 
    assert B.foo() == "Hello" 

但是,这并不工作,因为在Bfoo被直接导入。

如何存根A.foo函数?

说明:我无法编辑A.pyB.py。只有用于测试的文件,因此从from A import fooimport AB.py中的A.foo的使用没有变化是可能的。

回答

1

您可以在导入之前B修补功能:

import A 

def setup_module(): 
    A.foo = lambda: "Hello" 

def test_foo(): 
    import B 
    assert B.foo() == "Hello" 

这样,A.foo已经换成了时间B进口A.foo