2014-10-01 2 views
2

Нужно ли создать тест для ModelForm, как показано ниже? Причина в том, что на самом деле нет кода.Как правильно протестировать ModelForms и представления в Django

class HouseForm(forms.ModelForm): 
    class Meta: 
     model = House 
     exclude = ['user',] 
     fields = ['area', 'num_floors',] 

Так что только часть для тестирования просто проверить, если exclude и include поля не имеют общее поле. Также, чтобы проверить, что exclude и include действительно имеют все поля модели и не более.

Имеет ли смысл?

С другой стороны, я хотел бы написать единичный тест для следующего вида. Он использует ModelForm выше.

Возможно ли как-нибудь написать настоящий единичный тест без использования некоторых инструментов, таких как Selenium, что в некотором смысле функциональное тестирование? Дело в том, что я не знаю, как передать некоторые значения поля над представлением.

@login_required 
def update_or_create_house(request, house_id=None): 

    if house_id: 
     house = request.user.house_set.get(pk=house_id) 
    else: 
     house = None 

    if request.method=="POST": 
     form = HouseForm(request.POST, instance=house) 
     if form.is_valid(): 
      result = form.save(commit=False) 
      result.user = request.user 
      result.save() 

      return redirect('houses-viewall') 
     else: 
      print form.errors 
    else: 
     form = HouseForm(instance=house) 

    return render(request, 'housemgm/edit_house.html', {'form':form, 'house':house,}) 

Последний вопрос: хороший дизайн для редактирования и создания функциональных возможностей в одном представлении? Или я должен разделить их на две части?

Просто для полноты модель

class House(models.Model): 
    area = models.FloatField() 
    owner = models.ForeignKey(User) 
    num_floors = models.IntegerField(default=1) 

ответ

4

Во-первых, не проверить вещи, которые предоставляются самим Джанго. Если у вас нет пользовательского кода в вашей модели, не проверяйте его конкретно: функциональность форм модели в целом уже хорошо проверена Django.

Для проверки вашего вида вы можете использовать встроенный файл test client, который имитирует GET и POST на вашем представлении. Затем вы можете делать утверждения о содержании ответа и состоянии базы данных до и после вашего теста.

И, наконец, да, это хороший образец для представления.

+1

Мне было непонятно, как я могу передать значения формы форме на просмотр тестовым клиентом. Но в [link] (http://stackoverflow.com/questions/11885211/how-to-write-a-unit-test-for-a-django-view?rq=1) был дан ответ. Поэтому я просто хочу использовать data-argument client.get или client.post. – user3142459