所以我正在写一些单元测试,我想测试某个函数没有被调用。 这是我的代码片段:
def persist(...):
for key, meta in metadata.items():
if key in invalid_currency:
continue
_get_security_status(...)
return
def test_persist(...):
...
exg._meta.metadata = {
('EBBO_0', '20210104'): {'ccy': '', 'mic': 'xswx'},
('EBBO_00', '20210104'): {'ccy': 'GBPO', 'mic': 'xswx'}
}
with patch('exchanges.exchange.Meta._get_security_status') as get_security_status:
exg._meta.persist(security_files_generated)
assert get_security_status.assert_not_called()
test_persist()
#AssertionError: assert None
所以当我运行上面的代码时,我得到一个
AssertionError: assert None
错误。我希望测试通过。
当我在breakpoint()
上方的persist
函数中设置一个continue
时,在这两种情况下,它都会触发continue
语句,所以我知道这与数据无关,而是与我是如何嘲笑或使用assert_not_called()
?
我的期望是测试用例通过,因为没有调用
get_security_status
函数。