2016-10-24 67 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