2015-03-02 85 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