0

我无法模拟某个函数我无法让断言工作,这是我的设置

在 some_package.some_file.py

import SomeClass

def init_some_class(credentials)
    return SomeClass(
        username=credentials['username'], 
        password=credentials['password']
    )

在主脚本包中我使用上面的代码如下

from some_package.some_file import init_some_class

def business_logic(credentials, dict):
   api = init_some_class(credentials)
   try: 
       res = api.add_dict_to_db(dict)
       return True
   except ClientError:
      print("Something went wrong")
      return False

现在在单元测试中是我的麻烦所在

在 test_main_script.py

from main import main
from unittest import mock
import mock

class MockSomeClass:
    def add_dict_to_db(self, dict):
        return {}

class TestMain(unittest.TestCase):

    @mock.patch('main.main.init_some_class')
    def test_business_logic(self, mock_init_some_class):
        mock_init_some_class.return_value = MockSomeClass()
        fake_dict = { 'key' : 'value' }
        fake_credentials = { 'username' : 'fake_user' , 'password' : '1234'}
        main.business_logic(fake_credentials, fake_dict)
        mock_init_some_class.return_value.add_dict_to_db.assert_called_once_with(fake_dict)

当我运行单元测试时,我得到

>       mock_init_some_class.return_value.add_participant_to_entry.assert_called_once_with(fake_dict)
E       AttributeError: 'function' object has no attribute 'assert_called_once_with'
4

0 回答 0