2015-08-13 4 views
0

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

Проблема в том, что я новичок в Django, и я действительно не знаю, как я могу проверить функциональность представления (то есть: если ответ вида имеет список значений, приводящих к поиску значений формы в запросе).

Здесь я поставил пример кода с моей точки зрения:

@login_required 
def view(request): 

# If it's a HTTP POST, we're interested in processing form data. 
if request.method == 'POST': 

    form = Form(data=request.POST) 

    # If the form is valid 
    if (form.is_valid()): 

     resulting_of_search = ModelA.objects.filter(Q(att1=request.POST[attr1]) & ...) 



    else: 
     resulting_of_search = [] 


# Not a HTTP POST, so we render our form using two ModelForm instances. 
# These forms will be blank, ready for user input. 
else: 
    form = Form() 
    resulting_of_search= [] 



# Render the template depending on the context. 
return render(request, 
     'url/url.html', 
     {'resulting':resulting_of_search}) 

ответ

0

Вы пробовали Django Testing Tutorial? По сути, вам просто нужно отправить сообщение в свое мнение и проверить, что ответ возвращает то, что вы ожидаете.

Например ..

def test_index_view_with_no_questions(self): 
    """ 
    If no questions exist, an appropriate message should be displayed. 
    """ 
    response = self.client.get(reverse('polls:index')) 
    self.assertEqual(response.status_code, 200) 
    self.assertContains(response, "No polls are available.") 
    self.assertQuerysetEqual(response.context['latest_question_list'], []) 

Взятые из документации. Вы хотите изменить эту последнюю строку, чтобы утверждать, что «результат» находится в контексте. Или проверьте, что он содержит определенный список результатов, которые вы ищете. Как это ..

def test_results(self): 
    response = self.client.get(reverse('ensaioak_bilatu')) 
    self.assertQuerySetEqual(response.context['resulting'], [...whatever you expect resulting to contain...]) 
+0

Я сделал, но мой вопрос: как я могу проверить результат представления, если у меня есть «return render» в конце представления? – jartymcfly

+0

Я отредактирую свой ответ, чтобы добавить пример. – Alistair

+0

И что означает, что «предложение« назад («опросы: индекс»)? – jartymcfly

0

От читать ваш ответ, я думаю, вы не требуете о модульного тестирования но просто проверить, действительно ли работает ваш взгляд . Для начала вы можете использовать фрагмент кода, предоставленный на веб-сайте Django по следующей ссылке: https://docs.djangoproject.com/en/1.8/topics/forms/#the-view.

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