在关于测试的Flask文档(http://flask.pocoo.org/docs/testing/)中,它有一行代码
rv = self.app.get('/')
在它下面,它提到“通过使用self.app.get,我们可以使用给定路径向应用程序发送HTTP GET请求。”
在哪里可以找到这些直接访问方法的文档(我假设所有的其他方法都有一个)?具体来说,我想知道他们可以采取什么样的参数(例如,传递数据,标题等)。查看有关Flask对象的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
。
答案 0 :(得分:8)
这在Werkzeug项目中有记录,Flask从中获得测试客户端:Werkzeug's test client。
测试客户端不发出HTTP请求,它在内部调度请求,因此无需指定端口。
关于JSON在体内的支持,文档不是很清楚,但是如果你传递一个字符串并设置内容类型就好了,所以我不确定你为什么要找回代码400我会检查你的/generate
视图功能是否被调用。调试器应该有助于确定400来自何处。