有沒有簡單的機制來覆蓋單元測試的Django設置?我在我的一個模型上有一個管理器,它返回特定數量的最新對象。它返回的對象數量由NUM_LATEST設置定義。如何在Django中使用不同的設置進行單元測試?
如果有人要改變設置,這有可能使我的測試失敗。如何覆蓋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 - 你能解釋一下爲什麼或者提供更好的答案嗎? – user 2015-01-13 14:37:24
在此期間改變了;前者接受了一個[this one](http://stackoverflow.com/a/913596/1030960);) – Anto 2015-01-14 01:28:40