Gibt es einen einfachen Mechanismus zum Überschreiben von Django-Einstellungen für einen Komponententest? Ich habe einen Manager für eines meiner Modelle, der eine bestimmte Anzahl der neuesten Objekte zurückgibt. Die Anzahl der zurückgegebenen Objekte wird durch eine NUM_LATEST-Einstellung definiert.
Dies kann dazu führen, dass meine Tests fehlschlagen, wenn jemand die Einstellung ändert. Wie kann ich die Einstellungen überschreiben setUp()
und anschließend wiederherstellen tearDown()
? Wenn das nicht möglich ist, gibt es eine Möglichkeit, die Methode zu patchen oder die Einstellungen zu verspotten?
EDIT: Hier ist mein Manager-Code:
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]
Der Manager settings.NEWS_LATEST_MAX
schneidet das Abfrageset. Das getattr()
wird einfach verwendet, um eine Standardeinstellung anzugeben, falls die Einstellung nicht vorhanden ist.