【发布时间】:2020-10-01 12:13:05
【问题描述】:
我正在尝试为我的代码编写一些单元测试,而这些代码又使用了装饰器
import unittest
from unittest.mock import patch
from functools import wraps
def decorator(f):
@wraps(f)
def decorated(x):
return f(x+1)
return decorated
@decorator
def get_value(x):
return x
class MyTestCase(unittest.TestCase):
@patch('file.decorator', lambda f: f)
def test_something(self):
result = get_value(1)
self.assertEqual(1, result)
我正在尝试模拟装饰函数以仅返回 f 并完全绕过装饰器逻辑部分。这在Overriding decorator during unit test in python 中有讨论,但实际上并没有用。
【问题讨论】:
-
decorator在您的测试运行时已经被调用;它在定义get_value后立即运行。嘲笑它为时已晚。