模块中单个函数的存根
Stub for a single function in module
我有一个项目的下一个结构:
# 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.py
和B.py
。只有用于测试的文件,所以从 from A import foo
到 import A
没有变化,并且可以在 B.py
中使用 A.foo
。
您可以在导入之前修补函数 B
:
import A
def setup_module():
A.foo = lambda: "Hello"
def test_foo():
import B
assert B.foo() == "Hello"
这样,A.foo
已经被 B
导入 A.foo
的时间所取代。
我有一个项目的下一个结构:
# 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.py
和B.py
。只有用于测试的文件,所以从 from A import foo
到 import A
没有变化,并且可以在 B.py
中使用 A.foo
。
您可以在导入之前修补函数 B
:
import A
def setup_module():
A.foo = lambda: "Hello"
def test_foo():
import B
assert B.foo() == "Hello"
这样,A.foo
已经被 B
导入 A.foo
的时间所取代。