【发布时间】:2026-02-08 11:10:01
【问题描述】:
我有一大堆 Django 测试用例,它们使用 setUp 方法来初始化一些在众多测试中使用的属性,它们的构造方式和相互依赖的方式是我想从测试用例中移出的逻辑,并且重用
def setUp(self):
self.property_1 = ##some logic
...
我想将这些重写为一些方便的包装器,可以通过简单的继承或装饰器注入到类中,例如
@with_property_1(x=1, y=2)
def setUp(self):
...
def with_property_1(**model_kwargs):
def wrapper(f):
def wrapped(*args, **kwargs):
self = args[0]
self.property_1 = ## logic
f(*args, **kwargs)
return wrapped
return wrapper
但问题在于 PyCharm 无法识别这些实例属性的存在,因为 TestCase 类中的任何内容都不会设置它们。有没有另一种方法可以很好地实现这一点,或者有一种方法可以哄 PyCharm 承认这些属性在装饰器存在的情况下是合法的?
【问题讨论】:
-
也许使用第三方的东西更好,例如factoryboy.readthedocs.io/en/latest/introduction.html
-
@ruddra 对于这种情况,这似乎完全是矫枉过正。
标签: python django pycharm decorator testcase