単体テストの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()
単にデフォルト設定は存在しないはずを提供するために使用されます。