全局函数调用失败时对导入的模块进行单元测试

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

我正在尝试模拟通过导入在测试中创建的会话。我有两个文件:

/lib/module.py

import boto3
session = boto3.session()

/测试/test.py

from lib.module import test_func
test_function():
    assert test_func() 

我的测试环境在没有凭据的情况下从会话调用导入时失败。如何模拟导入/会话以防止测试环境中失败?

python unit-testing testing python-import
1个回答
0
投票
import unittest
from unittest.mock import patch, Mock
from lib.module import test_func

class TestYourModule(unittest.TestCase):
    @patch('lib.module.boto3')
    def test_function(self, mock_boto3):
        # Create a mock session
        mock_session = Mock()
        mock_boto3.session.return_value = mock_session

        # Configure the mock session as needed
        # For example, you can set up mock client or resource objects
        mock_client = Mock()
        mock_session.client.return_value = mock_client

        # Call your function under test
        result = test_func()

        # Add your assertions based on the expected behavior of test_func
        self.assertEqual(result, expected_result)

在此代码中,我使用

unittest.mock.patch
boto3
中的
lib.module
导入替换为模拟对象。然后,我们创建一个模拟会话并根据您的测试用例的需要对其进行配置。最后,您可以调用您的
test_func
并根据预期行为做出断言。

此方法允许您模拟

boto3
会话及其行为,因此您不需要真正的凭据。

© www.soinside.com 2019 - 2024. All rights reserved.