Flask pytest 在测试路由时失败

我不知道为什么我的 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 pytest


from main import app as flask_app


@pytest.fixture

def app():

    yield flask_app

    


@pytest.fixture

def client(app):

    return app.test_client()

测试/test_routes.py:


def test_algorithms_get(app, client):

    res = client.get('/algorithms')

    assert res.status_code == 200

python3 -m pytest现在,我尝试在 Flask 服务器运行和不运行的情况下在文件夹中运行.,但测试总是失败,我得到 404 status_code 而不是 200。我确信该路线工作正常,但我不明白为什么要进行测试失败。


这是我第一次使用 pytest (或任何单元测试框架),所以我确信我错过了一些东西,任何帮助将不胜感激。


慕的地8271018
浏览 94回答 1
1回答

喵喵时光机

解决了。这是一个配置错误。事实上,我在 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 pytestfrom api import create_app@pytest.fixturedef app():    flask_app = create_app({'TESTING': True})    yield flask_app@pytest.fixturedef client(app):    return app.test_client()@pytest.fixturedef runner(app):    return app.test_cli_runner()最后,我调用python3 -m pytest最上面的文件夹 ( .) 来运行测试。现在测试正在运行,我还可以为测试和其他用例创建不同的配置。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python