加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Flask test_client无法处理HTTP 204无数据

发布时间:2020-12-20 13:47:45 所属栏目:Python 来源:网络整理
导读:我删除了端点,返回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_c
我删除了端点,返回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它一切正常.有没有办法如何修复测试?

解决方法

小瓶子app:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读