首页 > 解决方案 > 如何在测试文件中导入 Flask 应用程序以进行单元测试

问题描述

我正在尝试从烧瓶中导入应用程序以进行单元测试,但我在导入时遇到了问题:

错误描述:回溯(最近一次调用):文件“tests.py”,第 4 行,从应用程序导入应用程序文件“/home/master/Workspaces/eduCAT/faq-test/api/app.py”,第 4 行,在 from .models 中导入 Question、QuestionSchema、Message、MessageSchema ImportError:没有已知父包的尝试相对导入

我有一个文件树,所有文件都在同一个文件夹中,如下所示:

Folder [api]

-> __init__.py

-> app.py

-> models.py

-> test.py

-> config.py

api 与flask run一起运行良好,但是当我尝试将app导入test.py时,我收到了这个错误。

导入: app.py

from flask import jsonify, request
from .models import Question, QuestionSchema, Message, MessageSchema
from api import app, db

导入: __init__.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow


app = Flask(__name__)
app.config.from_object('api.config')

db = SQLAlchemy(app)
ma = Marshmallow(app)

导入: models.py

from api import db, ma

test.py上

import os
import unittest

from app import app

我已经在test.py上尝试过的导入:导入:

from app import app

错误:

回溯(最近一次调用最后):文件“tests.py”,第 4 行,来自应用程序导入应用程序文件“/home/master/Workspaces/eduCAT/faq-test/api/app.py”,第 4 行,来自.models import Question, QuestionSchema, Message, MessageSchema ImportError: 没有已知父包的尝试相对导入

进口:

from .app import app

错误:

回溯(最后一次调用):文件“tests.py”,第 4 行,从 .app 导入应用程序 ModuleNotFoundError:没有名为“ main .app”的模块;' main ' 不是一个包

进口:

from api import app

错误:

回溯(最后一次调用):文件“tests.py”,第 4 行,从 api 导入应用程序 ModuleNotFoundError:没有名为 'api' 的模块

我坚持这个测试。

编辑 完整代码

app.py - https://dpaste.de/JgEi

__init__.py - https://dpaste.de/A9sG

models.py - https://dpaste.de/xEx4

config.py - https://dpaste.de/o8pS

test.py - https://dpaste.de/nGrF

标签: python-3.xrestapiflaskflask-sqlalchemy

解决方案


您需要修复一些导入才能运行代码...

从init .py导入对象的示例你使用吗

from . import app, db

或者创建一个名为 app 的包并在里面输入init .py


推荐阅读