#python #django #django-rest-framework #python-unittest.mock
Вопрос:
Я имею в виду filterset_class = main_app.api.filters.TestClassFilter
и там поле id__in
class TestClassFilter(FilterSet):
id__in = BaseInLimitFilter(
field_name="id",
label='Id in',
limit=LIMIT
)
с пользовательским классом фильтра api.filters.BaseInLimitFilter
class BaseInLimitFilter(BaseInFilter):
message = _("At most {} values are allowed.")
limit = 10
def __init__(self, *args, **kwargs):
if 'limit' in kwargs:
self.limit = kwargs.pop('limit')
super(BaseInLimitFilter, self).__init__(*args, **kwargs)
def filter(self, qs, value):
if len(value) >= self.limit:
raise ValidationError({
"id__in": self.message.format(self.limit)
})
return super(BaseInLimitFilter, self).filter(qs, value)
Я пытаюсь имитировать константу api.const.LIMIT
и установить значение 1 в своем тесте, но у меня с этим проблемы. Я пробовал что-то в этом роде:
@mock.patch('main_app.api.filters.LIMIT', 1)
У кого-нибудь есть какие-нибудь идеи, что я делаю не так?
Комментарии:
1. не могли бы вы сделать это воспроизводимым? Вы понимаете, что макет вступает в силу только после его вызова, но если вы импортируете свой код в верхней части набора тестов и создадите его экземпляр, будет слишком поздно его издеваться