我有一门课:
class AccountBusiness:
def save(self, account) -> Account:
if not account.account_number_is_valid():
return False
return True
测试如下:
^{pr2}$但它显示了一个例外,比如:
AssertionError: <MagicMock name='save()()' id='48830448'> != True
我想将account.account_number_is_valid()
的返回值设置为False
,并运行测试。在
您正在对要测试的实例方法使用patch对象。但是,您希望测试
save
方法中的逻辑。因此,模拟出来并不能测试该方法内部的任何逻辑。因此,您实际得到的输出是:应该是第一个暗示事情不对的地方。您的
^{pr2}$save
方法将作为MagicMock
返回。你不想这样。您实际想要做的只是模拟Account
类,然后从那里开始相应的操作。所以,你在这里打补丁:实际上应该是:
path.to.AccountBusiness.Account
是Account
类相对于AccountBusiness
类的位置。在所以,有了这个补丁,那么调用
Account
的return_value
将成为您的模拟对象,您可以将它用于您的account_number_is_valid
。所以,代码实际上是这样的:另外,要密切注意最后的断言。它被更改为使用可用的}。在
assertFalse
。另外,检查一下您自己的逻辑,因为为account_number_is_valid
返回False
实际上将在您的save
方法中返回{相关问题 更多 >
编程相关推荐