2015-02-23 41 views
3

您好想要测试终端中我的应用程序应用程序中的“删除路由”,我可以看到测试已经过去并且它显示“test_user_delete(test_app.LayoutTestCase)... ok” 但是当我打开封面时,它仍然带有红色,这意味着它不会覆盖它,请有人向我解释为什么和我在哪里做错了?Flask应用程序的测试覆盖率不起作用

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

尝试改变'self.assertTrue( '删除完成!',response.data)''通过self.assertEqual(” delete done!',response.data)':你现在没有测试任何东西,你的'self.assertTrue()'语句永远是真的。我不是一个Falsh专家,但据我所知,'flash()'消息没有回应,但你可以找到其他地方。 – 2015-02-23 11:59:45

+0

thnx @ Micheled'Amico我得到了这个错误AssertionError:'删除完成!' !='<!DOCTYPE HTML PUBLIC“ - // W3C // DTD HTML 3.2 Final // EN”> \ n 404找不到 \ n

找不到

\ n

在服务器上找不到请求的URL。如果您手动输入网址,请检查拼写并重试。

\ n' – LiLi 2015-02-23 12:02:55

+0

这意味着你不打电话给删除页面(建议覆盖范围)。首先测试'response.code == 200'(我猜...)以确保将其称为用户的测试数据库。 – 2015-02-23 12:06:16

回答

-1

我假设你的设置,方法设置app.config['Testing'] = True。否则烧瓶登录将重定向您的登录视图。

编辑但是,这似乎不是问题在这里,因为你得到一个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