You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask(Connexion)API测试报错:200 != <Response streamed [200 OK]>

解决Flask/Connexion API测试中状态码断言失败的问题

嘿,我一眼就看出问题出在哪啦!你现在遇到的错误是因为用错了Response对象的状态码属性,导致拿不到预期的整数200,反而拿到了整个响应状态的描述字符串。

问题原因

在Flask(包括基于它的Connexion)的测试客户端返回的Response对象里,_status_code是内部私有属性,它并不是直接返回整数状态码,而是可能返回一个包含状态描述的对象(比如你看到的<Response streamed [200 OK]>)。而我们应该使用公开的status_code属性来获取整数形式的状态码。

修改后的正确代码

把你的断言代码改成下面这样就可以了:

response_add_subscription_1 = self.app.post(
    '/user/alice/data_source/{}/subscriptions/{}'.format(ds_uuid1, dp_uuid),
    content_type='application/json'
)
# 使用公开的status_code属性,而不是私有属性_status_code
self.assertEqual(200, response_add_subscription_1.status_code, 
                 "Status code of response for subscription registration of alice is not 200!")

额外小提示

  • 如果你想验证响应的状态文本(比如"OK"),可以用response_add_subscription_1.status,它会返回类似"200 OK"的字符串。
  • 测试API的时候,除了状态码,还可以用response_add_subscription_1.get_json()来解析返回的JSON数据,进一步验证接口的返回内容是否符合预期。
  • Connexion的测试客户端完全兼容Flask的测试规范,所以后续写测试的时候,尽量参考Flask官方文档里的测试属性和方法,避免使用带下划线的私有属性,这些属性可能会在框架版本更新时发生变化。

内容的提问来源于stack exchange,提问作者Gasp0de

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:56:19