带有上下文管理器的 Python 测试函数装饰器 - 模拟上下文管理器

问题描述

我有一个装饰器,它使用一个记录一些数据的上下文管理器:

# file1.py
from path.to.library import contextManager,helperClass

def record(Metadata_1,Metadata_2):
    def record_decorator(func):
        def wrapper(*args):
            with contextManager("contextName",helperClass):
                return func(*args)
        return wrapper
    return record_decorator

我想通过检查上下文管理器启动并使用正确的参数初始化来测试这个装饰器。目前,我正在尝试以下操作:

@mock.patch("file1.contextManager")
@mock.patch("file1.helperClass")
def test_decorator(helperClass_mock,contextManager_mock):
    
    @record("data1","data2")
    def helperFunction(param1):
        return param1

    helperFunction("just to test decorator")

    contextManager_mock().__enter__.assert_called_once()
    contextManager_mock.__init__.assert_called_once_with("contextName",helperClass_mock)
    

我收到一个错误,说我缺少一个必需的参数(根据参数名称,我假设是 contextManager 的构造函数中的第一个参数)。任何建议/帮助将不胜感激

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...