python中关于包的定义_python – 如何模拟一个包的模块中定义的函数?

只需在foo模块之前导入bar模块并模拟它:

from mock import Mock

from dirBar import bar

bar.returnBar = Mock(return_value='Foo')

from foo import printFoo

printFoo()

在foo.py中导入returnBar时,您将模块的值绑定到一个名为returnBar的变量。这个变量是本地的,所以当foo被导入时,它被放在printFoo()函数的关闭中,并且闭包中的值不能通过outiside它的代码更新。因此,在导入foo之前应该有新的值(即嘲笑功能)。

编辑:以前的解决方案工作,但不稳定,因为它取决于订购进口。那不是很理想另一个解决方案(在第一个之后发生的)是在foo.py中导入bar模块,而不是仅导入returnBar()函数:

from dirBar import bar

def printFoo():

print bar.returnBar()

这将工作,因为returnBar()现在直接从bar模块而不是关闭。所以如果我更新模块,将检索新的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值