2015-03-02 88 views
-2

我尝试测试我的烧瓶的编辑路线应用但是得到这个错误我认为这个错误通常是因为返回,即使我在我的编辑路径中有一个返回我该如何修复这个错误谢谢? 错误:ValueError:查看函数没有返回响应

File "/home/peg/flask-Alembic/test/test_app.py", line 59, in test_monkey_edit 
    response = self.client.get('/edit/1', follow_redirects=True) 
    File "/usr/local/lib/python2.7/dist-packages/werkzeug/test.py", line 762, in get 
    return self.open(*args, **kw) 
    response = self.run_wsgi_app(environ, buffered=buffered) 
    File "/usr/local/lib/python2.7/dist-packages/werkzeug/test.py", line 855, in run_wsgi_app 
    app_iter = app(environ, start_response) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1836, in __call__ 
    return self.wsgi_app(environ, start_response) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1820, in wsgi_app 
    response = self.make_response(self.handle_exception(e)) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1403, in handle_exception 
    reraise(exc_type, exc_value, tb) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app 
    response = self.full_dispatch_request() 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1478, in full_dispatch_request 
    response = self.make_response(rv) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1566, in make_response 
    raise ValueError('View function did not return a response') 
ValueError: View function did not return a response 

view.py:

@layout.route('/edit/<int:id>', methods=['GET','POST']) 
def edit(id=None): 
     user = Users.query.get_or_404(id) 
     form = LoginForm(obj=user) 
     if request.method=='POST': 
      if form.validate_on_submit()== True: 
      form.populate_obj(user) 
      db.session.commit() 
      flash("You have been updated the profile") 
      return redirect(url_for('layout.user',page=1,sortby='normal')) 

      else: #If the form does not have all fields that are required 
       return render_template('edit.html', form=form, id=id) 

test.py:

def test_edit(self): 
     u = Users(name='user1', email='[email protected]', age=25) 
     db.session.add(u) 
     db.session.commit() 
     data = dict(name='admin', email='[email protected]', age=28) 
     db.session.commit() 
     response = self.client.get('/edit/1', follow_redirects=True) 
     self.assertTrue('You have been edit the profile', response.data) 
+0

的可能重复http://stackoverflow.com/questions/26852969/valueerror-view-function-did-not -return-a-response-in-flask – 2015-03-02 11:28:41

+0

[查看功能没有返回响应]的可能重复(http://stackoverflow.com/questions/14770098/view-function-did-not-return-a-response) – dirn 2015-03-02 13:47:33

回答

1

您测试get请求,但在你看来,你仅post回应:

if request.method=='POST': 
      if form.validate_on_submit()== True: 
      ... # form valid logic 
      return redirect(url_for('layout.user',page=1,sortby='normal')) 

      else: # invalid post form logic 
       return render_template('edit.html', form=form, id=id) 

return render_template('home.html) # get logic 

如果你想测试post要求你应该使用POST功能:self.client.post(url, data)

def view_code(): 
    if request.method=='POST': 
     if form.validate_on_submit()== True: 
      user.name = form.user_name 
      user.age = form.age 
      user.email = form.email 
      db.commit() 
      ... # other form valid logic 

def test_edit(self): 
    response = self.client.post('/edit/1', data={'user_name': 'admin', age='28', email='[email protected]') 
    self.assertTrue('You have been edit the profile', response.data) 
+0

thanx它解决了错误,但仍然不包括闪光self.assertTrue('你已经编辑配置文件',response.data)你知道我该怎么做thanx @Jimilian – LiLi 2015-03-02 11:41:35

+0

@LiLi,你不要打开如何测试代码。你不应该在测试代码中使用db函数,你应该用新数据创建正确的'post'请求并发布它。 – Jimilian 2015-03-02 12:15:35

+0

@LiLi,我添加了一些信息,也许它可以帮助你。 – Jimilian 2015-03-02 12:24:47