Czy istnieje prosty mechanizm zastępowania ustawień Django w teście jednostkowym? Mam menedżera na jednym z moich modeli, który zwraca określoną liczbę najnowszych obiektów. Liczba zwracanych obiektów jest zdefiniowana przez ustawienie NUM_LATEST.
Może to spowodować niepowodzenie moich testów, gdyby ktoś zmienił ustawienie. Jak mogę zmienić ustawienia, setUp()
a następnie przywrócić je tearDown()
? Jeśli to nie jest możliwe, czy jest jakiś sposób, w jaki mogę małpować poprawkę metody lub kpić z ustawień?
EDYCJA: Oto mój kod menedżera:
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]
Menedżer używa settings.NEWS_LATEST_MAX
do dzielenia zestawu zapytań. getattr()
Jest po prostu wykorzystane do zapewnienia domyślne ustawienie nie powinien istnieć.