2015-02-23 6 views
3

Привет, хочу проверить «удалить маршрут» в моем приложении с флягой в терминале. Я вижу, что тест прошел, и он сказал: «test_user_delete (test_app.LayoutTestCase) ... ok» Но когда я открываю титульную страницу, он все еще имеет красный цвет, что означает, что он не покрывает его, пожалуйста, кто-нибудь объяснит мне, почему и где я делаю неправильно?Test Coverage for Flask application does not work

app.layout.view.py

enter image description here

test.py

  e1 = Users(name='admine2', email='[email protected]', age=25) 
      e2 = Users(name='teste2', email='[email protected]', age=27) 
      db.session.add_all([e1, e2]) 
      db.session.commit() 
      u = Users.query.get(1) 
      db.session.remove() 
      db.session.delete(u) 
      response = self.client.post('/delete/1', 
      follow_redirects=True) 
      self.assertTrue('admine2 is removed!', response.data) 

view.py:

@layout.route('/delete/<int:id>') 
    def delete(id): 
    """remove monkey""" 
    user = Users.query.get_or_404(id) 
    db.session.delete(user) 
    db.session.commit() 
    flash("{0} is removed!".format(user.name)) 
    return redirect(url_for("layout.user", page=1, sortby='normal')) 
+0

Try изменить 'self.assertTrue ('Delete сделано!', Response.data)' 'от self.assertEqual (» delete done! ', response.data) ': вы ничего не тестируете, теперь ваше предложение' self.assertTrue() 'всегда истинно. Я не эксперт Falsh, но насколько я знаю, 'flash()' сообщение не в ответе, но вы можете найти где-то еще. –

+0

thnx @ Micheled'Amico Я получил эту ошибку AssertionError: 'delete done!' ! = ' \ n 404 Не найдено \ n

Не найдено

\ n

Запрашиваемый URL-адрес не найден на сервере. Если вы указали URL вручную, проверьте правильность написания и повторите попытку.

\ n ' – LiLi

+0

Это означает, что вы не вызываете страницу удаления (как предложено покрытие). Первый тест 'response.code == 200' (я угадываю ...), чтобы убедиться, что вы вызываете его и тестовый db для пользователя. –

ответ

-1

Я предполагаю, что ваша установка-метод устанавливает app.config['Testing'] = True. В противном случае Flask-login собирается перенаправить вас на ваш логин.

Редактировать Но это не похоже на проблему здесь, так как вы получаете ошибку 404. Если требуется логин, проблема была бы несанкционированной ошибкой - 401. Вместо этого я ошибочно предположил, что вы зарегистрировали свою функцию с помощью метода «DELETE», поэтому мое предложение url_for было неправильным.

Вы можете найти проблесковое сообщение в сеансе под ключом _flashes. Вы можете попробовать:

with self.client as c: 
    rv = self.client.get(url_for('delete', id=e1.id), follow_redirects=True) 
    print rv.data 
    with c.session_transaction() as session: 
     self.assertTrue("delete done !." in session['_flashes']) 

Вы также можете захотеть взглянуть на Flask Testing

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

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