単体テストの Django 設定をオーバーライドする簡単なメカニズムはありますか? モデルの 1 つに、特定の数の最新オブジェクトを返すマネージャーがいます。返されるオブジェクトの数は、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()
、設定が存在しない場合にデフォルトを提供するために使用されます。