unittest模拟如何模拟被调用的方法

时间:2020-02-05 20:20:36

标签: python mocking python-unittest

我想测试方法a调用方法b。这些方法位于单独的文件中,并且不是类对象的一部分。

# file_a.py
from file_b import b

def a():
    b()
# file_b.py
def b():
    test
import unittest
from unittest import mock

from file_a import a

class MyTestCase(unittest.TestCase):
    @mock.patch('file_b.b')
    def test_b_called(self, mock):
        a()
        mock.assert_called()

if __name__ == "__main__":
    unittest.main()

此操作失败,显示AssertionError: Expected 'b' to have been called.

有正确的方法吗?

1 个答案:

答案 0 :(得分:1)

当您将函数导入当前名称空间时(如您的示例),该功能将需要在该名称空间中打补丁。对于您的情况,您需要:

@mock.patch('file_a.b')

如果您完成了导入和使用,您将修补file_b.b

import file_b
def a():
    file_b.b()
相关问题