首页 > 解决方案 > 失败 test_main.py::test_login_success - 断言 405 == 200

问题描述

我是 pytest 的新手,正在努力测试代码。测试结果如何显示失败。

**main.py**

@app.post("/loginsuccess/", response_class=HTMLResponse)
async def login_success(request: Request, username: str = Form(...), password: str = Form(...)):
    p = await User_Pydantic.from_tortoise_orm(await User.get(username=username, password=password))
    json_compatible_item_data = jsonable_encoder(p)
    if json_compatible_item_data is not None:
        logger.info("Logged in Successfully")
        return templates.TemplateResponse("homepage.html", {"request": request, "username":username})
    else:
        status_code:int
        status_code = 500
        logger.error("Invalid Credentials")
        return templates.TemplateResponse("index.html", {"request":request, "status_code":status_code})
**test_main.py**

def test_login_success():
    response = client.get('/loginsuccess/', json={'username': 'sheik', 'password':'abdullah'})
    assert response.status_code==200

下面是测试结果

================================================================== short test summary info ==================================================================
FAILED test_main.py::test_login_success - assert 405 == 200

标签: pythonunit-testingpytestfastapi

解决方案


实际上,您从服务器获得的响应是​​ 405,而不是 200。这就是您的断言失败的原因。

HTTP 405 is Method Not Allowed 响应状态码表示请求方法为服务器已知但目标资源不支持。

只需确保服务器/后端/loginsuccess/作为Post请求处理它看起来您的请求具有无效参数或后端配置不正确。


推荐阅读