为了账号安全,请及时绑定邮箱和手机立即绑定

Flask pytest 在测试路由时失败

Flask pytest 在测试路由时失败

慕的地8271018 2023-12-29 15:11:07
我不知道为什么我的 pytest 会失败,而他们不应该失败。我有一个 REST API Flask 服务器,具有以下文件夹结构:.├── api│   ├── conf│   ├── database│   ├── error│   ├── handlers│   ├── models│   ├── roles│   ├── schemas│   └── test.db├── main.py├── tests│   ├── conftest.py│   └── test_routes.py我的测试是:测试/conftest.py:import pytestfrom main import app as flask_app@pytest.fixturedef app():    yield flask_app    @pytest.fixturedef client(app):    return app.test_client()测试/test_routes.py:def test_algorithms_get(app, client):    res = client.get('/algorithms')    assert res.status_code == 200python3 -m pytest现在,我尝试在 Flask 服务器运行和不运行的情况下在文件夹中运行.,但测试总是失败,我得到 404 status_code 而不是 200。我确信该路线工作正常,但我不明白为什么要进行测试失败。这是我第一次使用 pytest (或任何单元测试框架),所以我确信我错过了一些东西,任何帮助将不胜感激。
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

解决了。这是一个配置错误。


事实上,我在 create_app() 工厂中犯了一个错误。


据我所知,最好在服务器父目录的init .py 文件中定义 create_app (我在 main.py 中定义该函数)。


需要明确的是,我将 create_app 工厂定义移至此处 (*):


.

├── api

│   ├── __init__.py *

│   ├── conf

│   ├── database

│   ├── error

│   ├── handlers

│   ├── models

│   ├── roles

│   ├── schemas

│   └── test.db

├── main.py

├── tests

│   ├── conftest.py

│   └── test_routes.py

新测试/conftest.py:


import pytest


from api import create_app



@pytest.fixture

def app():

    flask_app = create_app({'TESTING': True})

    yield flask_app



@pytest.fixture

def client(app):

    return app.test_client()


@pytest.fixture

def runner(app):

    return app.test_cli_runner()

最后,我调用python3 -m pytest最上面的文件夹 ( .) 来运行测试。


现在测试正在运行,我还可以为测试和其他用例创建不同的配置。


查看完整回答
反对 回复 2023-12-29
  • 1 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信