fastapi 的 TestClient 的 delete 方法如何传递请求体?

接口

@meta.delete('', summary='删除指定母本', description='在请求体中传递一系列 meta_uuid, 返回已删除的母本的 meta_uuid', response_model=list[str])
def delete_meta(
    meta_uuids: list[str]
):
    pass

单元测试

client = TestClient(app)

response = client.delete(
    f'/meta',
    json=[
        f'{meta_uuid}'
    ]
)

但是报错了

Traceback (most recent call last):
  File "/Users/ponponon/Desktop/code/work/vddb/svddb_api/testing/apps/test_meta.py", line 121, in test_collection_meta_001
    response = client.delete(
TypeError: TestClient.delete() got an unexpected keyword argument 'json'

看了一下这个函数签名不支持 json 或者 data 参数

图片.png

相比之下,requests 的 delete 是支持的传递 json 或者 data 的

怎么办?

阅读 3.2k
1 个回答

用requests库:

response = requests.delete(
    'http://localhost:8000/meta',
    json=[
        f'{meta_uuid}'
    ]
)

或者:
用POST请求替代DELETE请求:

@meta.post('/delete', summary='删除指定母本', description='在请求体中传递一系列 meta_uuid, 返回已删除的母本的 meta_uuid', response_model=list[str])
def delete_meta(
    meta_uuids: list[str]
):
    pass
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题