模拟导入模块时调用的函数

问题描述 投票:1回答:1

我想测试使用带有参数的修饰符的模块A。加载模块A时将评估参数。对于某些装饰器参数,我通过在模块foo中调用函数B来设置值。

# A.py
import B

@deco(arg1=B.foo())
def bar():
  ...

[当我想测试A时,我想模拟B.foo,以便为我的测试用例设置decorator参数。我认为B.foo必须在A加载B之前被模拟。

在单元测试中,作为A的调用者,我如何模拟B.foo以确保在评估A中的装饰器参数时使用模拟版本?

我想测试一个使用带有参数装饰器的模块A。加载模块A时将对参数进行求值。对于某些装饰器args,我通过在...

python unit-testing mocking python-unittest mox
1个回答
0
投票

[如果要确保确实使用了该模拟,则必须在修补A之后重新加载模块foo,因为bar已经用原始foo进行了评估。您可以将其包装在这样的灯具中(未经测试):

© www.soinside.com 2019 - 2024. All rights reserved.