繁体   English   中英

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

[英]unittest mock how to mock a method being called

我想测试该方法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.

有没有正确的方法来做到这一点?

当您将函数导入当前命名空间时,就像在您的示例中一样,需要在该命名空间中修补该函数。 在您的情况下,您需要:

@mock.patch('file_a.b')

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

import file_b
def a():
    file_b.b()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM