当运行下面的测试时,我得到了stop called on unstarted patcher
.
def test_get_subvention_internal_no_triggered_admission(self):
billing_cluster = BillingClusterFactory()
subvention = SubventionFactory(billing_cluster=billing_cluster)
convive_sub = ConviveFactory(subvention=subvention, billing_cluster=billing_cluster)
order_5 = OrderFactory(beneficiary=convive_sub)
order_operation_5 = CreationOrderOperationFactory(order=order_5)
with patch('orders.models.Order.subvention_triggered_same_day', return_value=True):
with patch('builtins.hasattr', return_value=False):
self.assertIsNone(order_operation_5._get_subvention())
我在堆栈溢出上阅读了有关此错误的内容,并得出结论,我应该避免模拟相同的内容(堆叠模拟)。但这不是我在这里做的事情。我正在嵌套模拟,并且看来没问题.
如果我反转返回值(第一个模拟返回 False,第二个返回 True),则测试效果良好。
任何想法?
谢谢。
简而言之,你不能patch
the builtins
func hasattr
patch('builtins.hasattr', return_value=False)
原因:被使用mock.py
if not _is_started(self):
raise RuntimeError('stop called on unstarted patcher')
def _is_started(patcher):
# XXXX horrible
return hasattr(patcher, 'is_local')
重复错误:
@mock.patch('__builtin__.hasattr')
def test_mock_hasattr(self, mocked_hasattr):
# as long as it is set to False, it will trigger
mocked_hasattr.return_value = False
嘲笑一个builtins
里面的功能models.py
:
# narrow the mock scope
@mock.patch('orders.models.hasattr')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)