Python初始化方法内部的模拟函数调用

2024-04-25 07:36:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个单元测试来确保类对象的创建是正确的,这个对象依赖于从s3获取内容。我想把调用s3的函数完全模拟出来:

class SomeClassTest(unittest.TestCase):

    @patch('someDir.util._call_to_s3')
    def test_someclass_load(self, magic_mock):
        magic_mock.return_value = {"host": "bogus.com"}
        some_class = SomeClass()

        self.assertGreater(len(some_class), 0)

class SomeClass():

    def __init__():
        try:
            content = _call_to_s3(bucket_name, file_name)
        except:
            rest of code ...

如何模拟在另一个库文件中定义的函数\u call_to_s3?在


Tags: to对象函数nameself内容s3def
1条回答
网友
1楼 · 发布于 2024-04-25 07:36:46

当你使用monkeypatch时,你改变了一个名字,使它指向一个不同的值。你不能改变值本身。关键是修补正在测试的单元所使用的名称。在

每次执行“from foo import bar”操作时,都会创建一个新的本地名称副本。在这种情况下,似乎有些类不在someDir.util公司模块。假设它在里面其他型号在

在其他型号会做一些类似“从someDir.util公司将“调用”导入“s3”。这将创建一个新名称其他型号。打电话给_s3。这是SomeClass使用的名称,所以这是您需要修补的名称。在

例如@patch('其他型号.\u呼叫\u s3')

没有办法修补每个指向特定值的名称。在

相关问题 更多 >