存储模块中的单个功能

时间:2016-10-24 17:08:35

标签: python python-2.7 nose stub

我有一个项目的下一个结构:

# 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"

但是,这不起作用,因为在B foo直接导入。

如何存根A.foo功能?

注意:我无法修改A.pyB.py。只有测试文件,因此from A import fooimport A之间的A.foo不会发生变化,B.py Authentication token = new UsernamePasswordAuthenticationToken(entity, null, entity.getAuthorities()); Authentication authentication = this.authenticationProvider.authenticate(token); 的使用也是可能的。

1 个答案:

答案 0 :(得分: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取代。