2015-01-17 5 views
1

Имея следующую функцию в views.py:Как проверить переадресацию на созданный экземпляр в термосе

def ask_question(): 
     form = QuestionForm() 
     if form.validate_on_submit(): 
      question = Question(title=form.title.data, text=form.text.data) 
      db.session.add(question) 
      db.session.commit() 
      return redirect('/questions/%d/' % question.id) 
     return render_template('ask_question.html', form=form) 

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

def test_can_post_question(self): 
    response = self.tester.get('/new-question') 
    self.assert_200(response) 
    form = self.get_context_variable('form') 
    self.assertIsInstance(form, QuestionForm) 
    response = self.tester.post('/new-question', data={'title': 'What about somestuff in Flask?', 
                 'text': 'What is it?'}) 
    self.assertRedirects(response, '/questions/%d' % created_question.id) 
                #^ how can I get id of created model here? 

Я использую флягу, колбовую SQLAlchemy, Колба-тестирование

ответ

1

Query созданный объект вопрос. В качестве побочного эффекта вы можете проверить, что вопрос был создан.

... 
q = Question.query.filter_by(title='What about somestuff in Flask?').first() 
self.assertRedirects(response, '/questions/%d/' % q.id) 
+0

Это то, что пришло мне на ум, но если есть элегантный способ? Я нашел somethind как метод 'lastcreatedrow' в документах SQLAlchemy, но не могу понять, как его использовать. – micgeronimo

+1

@micgeronimo. Вы можете использовать его для проверки представления. Но что, если вы создадите еще один объект после вопроса? Это сделает ваш тест хрупким. – falsetru

+0

звучит разумно. Btw, корректно ли это 'response = self.tester.post ('/ new-question', data = {'title': 'Что относительно somestuff в Flask?', 'Text': 'What is it?'})' ? Я получаю None, когда пытаюсь сделать это 'q = Question.query.filter_by (title = 'Что относительно somestuff в Flask?'). First()' – micgeronimo

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

  • Нет связанных вопросов^_^