在函数中模拟实例方法调用

时间:2018-01-05 21:42:24

标签: python unit-testing

我目前正在通过在python中创建一个单元测试套件来实现编写测试的第一次真实体验,并且我遇到了mock框架的问题。

目前,我的函数有这样一行:

def data_function():
    *Some code*
    with AccountDBConnection(account_id) as adb: # Pulling data
        data = adb.get_query_results(query)
    *Some more code*

我试图测试正确调用函数get_query_results。在我的测试中,我试图测试它:

@patch('package.module_that_defines_data_function.AccountDBConnection')
def test_data_function(self, mock_AccountDBConnection):
    *Other assertions*
    mock_AccountDBConnection.get_query_results.assert_called_once_with(ANY)
    *more assertions*

不幸的是,每当我尝试运行此测试时,我都会收到一条AssertionError,声明get_query_results永远不会被调用。它肯定被称为,我无法认识到这一点。我认为这是因为该方法是在函数内创建的对象实例上调用的,但我不知道如何让模拟识别。有没有人有任何建议?

非常感谢!

0 个答案:

没有答案