5

在有关测试的 Flask 文档中(http://flask.pocoo.org/docs/testing/),它有一行代码

rv = self.app.get('/')

在它下面,它提到“通过使用 self.app.get,我们可以向具有给定路径的应用程序发送 HTTP GET 请求。”

在哪里可以找到这些直接访问方法的文档(我假设所有 restful 方法都有一个)?具体来说,我想知道他们可以采用什么样的参数(例如,传入数据、标题等)。环顾一下 Flask 对象的烧瓶文档,它似乎没有列出这些方法,即使它在上面的示例中使用了它们。

或者,知识渊博的人可以回答我想弄清楚的问题:我正在尝试模拟向我的服务器发送 POST 请求,就像我使用以下行一样,如果我通过 HTTP 执行此操作:

    res = requests.post("http://localhost:%d/generate" % port, 
                        data=json.dumps(payload), 
                        headers={"content-type": "application/json"})

在正确的端口上运行 Flask 应用程序时,上述方法有效。但我尝试用以下内容替换它:

    res = self.app.post("/generate", 
                        data=json.dumps(payload), 
                        headers={"content-type": "application/json"})

相反,我得到的响应对象是400 BAD REQUEST.

4

1 回答 1

8

这记录在 Werkzeug 项目中,Flask 从中获得了测试客户端:Werkzeug 的测试客户端

测试客户端不发出 HTTP 请求,它在内部分派请求,因此无需指定端口。

文档对正文中对 JSON 的支持不是很清楚,但似乎如果你传递一个字符串并设置内容类型你应该没问题,所以我不确定你为什么会得到一个代码 400。我会检查您的/generate视图函数是否被调用。调试器应该有助于找出 400 的来源。

于 2013-09-25T18:04:00.420 回答