Có cơ chế đơn giản nào để ghi đè cài đặt Django cho bài kiểm tra đơn vị không? Tôi có một trình quản lý trên một trong các mô hình của tôi trả về một số lượng cụ thể các đối tượng mới nhất. Số lượng đối tượng mà nó trả về được xác định bởi một cài đặt NUM_LATEST.
Điều này có khả năng làm cho các thử nghiệm của tôi không thành công nếu ai đó thay đổi cài đặt. Làm cách nào để tôi có thể ghi đè cài đặt trên setUp()
và sau đó khôi phục lại chúng tearDown()
? Nếu điều đó không thể thực hiện được, có cách nào đó để tôi có thể vá phương pháp hoặc mô phỏng cài đặt không?
CHỈNH SỬA: Đây là mã người quản lý của tôi:
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]
Người quản lý sử dụng settings.NEWS_LATEST_MAX
để cắt bộ truy vấn. Chỉ getattr()
được sử dụng để cung cấp một mặc định nếu cài đặt không tồn tại.