2015-02-24 28 views
4

我刪除終點,返回HTTP 204 瓶test_client無法處理HTTP 204個無數據

@blueprint.route('/foo', methods=['DELETE']) 
def delete_tag(id): 
    # .... 
    return '', 204 

,我想測試

def test_delete_tag(self): 
    resp = self.client.delete(url_for('tags.delete_tag', id=1)) 
    self.assertEqual(resp.status_code, 204) 

,但我得到異常

Traceback (most recent call last): 
    File "tests/tags_test.py", line 31, in test_delete_tag 
    resp = self.client.delete(url_for('tags.delete_tag', id=1)}) 
    File ".virtualenvs/...site-packages/werkzeug/test.py", line 799, in delete 
    return self.open(*args, **kw) 
    File ".virtualenvs/...site-packages/flask/testing.py", line 108, in open 
    follow_redirects=follow_redirects) 
    File ".virtualenvs/...site-packages/werkzeug/test.py", line 742, in open 
    response = self.run_wsgi_app(environ, buffered=buffered) 
    File ".virtualenvs/...site-packages/werkzeug/test.py", line 659, in run_wsgi_app 
    rv = run_wsgi_app(self.application, environ, buffered=buffered) 
    File ".virtualenvs/.../site-packages/werkzeug/test.py", line 885, in run_wsgi_app 
    buffer.append(next(app_iter)) 
StopIteration 

響應狀態200它工作正常。有辦法如何修復測試?

+0

我也確認了我的問題。添加'buffered = True'可以解決問題,但我不明白爲什麼。 – 2016-01-14 14:04:50

回答

1

小燒瓶應用程式:

from flask import Flask, request 
app = Flask(__name__) 

@app.route('/foo', methods=['DELETE']) 
def delete_tag(): 
    print "i got", request.form['id'] 
    return '', 204 

@app.route('/foo2/<id>', methods=['DELETE']) 
def delete_tag2(id): 
    print "i got.. .", id 
    return '', 204 

if __name__ == '__main__': 
    app.run(debug=True) 

和在IPython中qtconsole;我這樣做:

In [3]: from app import app 

In [4]: from flask import url_for 

In [5]: c = app.test_client() 

In [6]: with app.test_request_context(): 
    ...:  rv = c.delete(url_for('delete_tag2', id=55)) 
    ...:  print rv.status_code 
    ...:  
i got.. . 55 
204 

In [7]: rv = c.delete("/foo", data={"id": 555}) 
i got 555 

In [8]: rv.status_code 
Out[8]: 204 
+0

嗯,對我來說行爲一樣。這至少會縮小可能出現問題的地方。 – farincz 2015-02-24 14:33:56