【问题标题】:Python mock patch local functionPython 模拟补丁本地函数
【发布时间】:2021-04-07 21:18:57
【问题描述】:

我想检查是否调用了本地函数(在测试本身上声明)。

例如:

def test_handle_action():
    action = "test"
    user = "uid"
    room = "room"
    content = "test"
    data = {}

    def test_this(user, room, content, data):
        pass

    handlers = {action: test_this}

    with mock.patch("handlers.handlers", handlers):
        with mock.patch(".test_this") as f:
            handle_action(action, user, room, content, data)

            f.assert_called_with()

如何在我的测试中模拟函数test_this 的路径?

.test_this 我得到了错误:

E       ValueError: Empty module name

【问题讨论】:

    标签: python pytest python-mock


    【解决方案1】:

    如果test_this 是一个模拟函数,您可以将test_this 定义为一个模拟对象并在其上定义断言:

    from unittest import mock
    
    def test_handle_action():
        # GIVEN
        action = "test"
        user = "uid"
        room = "room"
        content = "test"
        data = {}
    
        test_this = mock.Mock()
    
        handlers = {action: test_this}
    
        with mock.patch("handlers.handlers", handlers):
            # WHEN
            handle_action(action, user, room, content, data)
    
            # THEN
            test_this.assert_called_with(user, room, content, data)
    

    【讨论】:

    • 完美。谢谢!
    猜你喜欢
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多