【发布时间】:2010-10-29 03:38:28
【问题描述】:
是否有任何简单的机制可以覆盖单元测试的 Django 设置?我的一个模型上有一个管理器,它返回特定数量的最新对象。它返回的对象数量由 NUM_LATEST 设置定义。
如果有人要更改设置,这有可能使我的测试失败。如何覆盖setUp() 上的设置并随后在tearDown() 上恢复它们?如果这不可能,有什么方法可以修改方法或模拟设置吗?
编辑:这是我的经理代码:
class LatestManager(models.Manager):
"""
Returns a specific number of the most recent public Articles as defined by
the NEWS_LATEST_MAX setting.
"""
def get_query_set(self):
num_latest = getattr(settings, 'NEWS_NUM_LATEST', 10)
return super(LatestManager, self).get_query_set().filter(is_public=True)[:num_latest]
管理器使用settings.NEWS_LATEST_MAX 对查询集进行切片。 getattr() 仅用于在设置不存在时提供默认值。
【问题讨论】:
-
@Anto -- 你能解释一下原因或提供更好的答案吗?
-
同时发生了变化;前一个被接受的是this one ;)
标签: django settings testing django-managers