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

使用pytest测试FastAPI的GET接口时如何给client.get正确传递参数

问题根源

  • GET请求不会携带JSON请求体,你使用client.get的json参数传值是错误用法。FastAPI中GET路由下未指定位置的参数默认是查询参数,需要通过URL查询串传递,对应TestClient的params传参字段。
  • 测试代码中的断言语法错误,单等号=是赋值操作,判断相等需要用双等号==。
  • 你提供的main.py代码中@app.get('/purpose')行末尾多了多余的冒号,属于Python语法错误,需要先删除。

正确修改方案

1. 修正test.py测试代码

将json参数替换为params传递查询参数,同时修正断言语法:

client = TestClient(app)
def test_purpose():
    # params参数会自动将字典内容拼接为URL查询串
    response = client.get("/purpose", params={"name":"test_name", "date":"01.01.2020"})
    assert response.status_code == 200

2. 可选:优化main.py参数声明(更规范)

给参数增加类型标注后,FastAPI会自动完成参数校验和类型转换,降低出错概率:

from fastapi import FastAPI
from datetime import date

app = FastAPI()

# 移除原代码多余的末尾冒号
@app.get('/purpose')
async def read_purpose(name: str, date: date):
    """some logic"""
    return {'ok':'ok'}

如果使用date类型标注,建议日期传值使用YYYY-MM-DD格式(例如2020-01-01),FastAPI会自动将字符串解析为日期对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:03:01