当我尝试断言一个函数未被调用时,使用 mock,为什么我会得到一个 ``AssertionError: assert None`` 错误?

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

所以我正在写一些单元测试,我想测试某个函数没有被调用。 这是我的代码片段:

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
函数。

python mocking assert
© www.soinside.com 2019 - 2024. All rights reserved.