我无法模拟某个函数我无法让断言工作,这是我的设置
在 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'