2015-03-25 5 views
0

Я новичок в тестировании в Django и мне было интересно, как писать тесты для сигналов.
Я просмотрел документацию, но не нашел ничего полезного.Основы тестирования сигналов в Django

Предположим, у a есть простой сигнал pre_save для модели Reservation, и я хочу изменить какой-либо атрибут перед сохранением его в базе данных.

Мой код выглядит следующим образом:

@receiver(pre_save, sender=Reservation) 
def set_destination_type(sender, instance, *args, **kwargs): 
    points = ['New York', 'Rome', 'Paris'] 
    if instance.destination in points: 
     instance.international = True 
    instance.international = False 

Как бы подойти к этому? Я просто создаю резервную копию и утверждаю, что было установлено правильное значение? Я проверяю эту функцию изолированно? Я действительно не знаю, с чего начать.

Спасибо!

ответ

1

Проще всего создать некоторые оговорки (где некоторые имеют пункт назначения в точках, другие - нет), задав пункт назначения «foo» (например), а затем сохраните их.

международный, похоже, является логическим полем, поэтому использование 'foo' (что не является логическим) и сохранение позволит вам проверить оба случая (и поскольку экземпляр не проверен/сохранен, вы можете назначить любое значение, которое вы хочу)

«Я проверяю эту функцию изолированно» => Я бы этого не сделал, структура сигналов сильно связана с моделями Django, чтобы получить изоляцию, вам нужно было бы издеваться над множеством библиотек, делающих ваш тест код намного сложнее, чем сам проверенный код

+0

Это действительно лучший вариант .. Спасибо – intelis

Смежные вопросы