如何在测试文件上导入Flask应用以进行单元测试

时间:2019-07-09 21:18:38

标签: python-3.x rest api flask flask-sqlalchemy

我正在尝试从flask导入应用程序以进行单元测试,但是在导入时遇到了麻烦:

  

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

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

Folder [api]

-> __init__.py

-> app.py

-> models.py

-> test.py

-> config.py

该API在烧瓶运行下运行良好,但是当我尝试将 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导入Question,QuestionSchema,Message,MessageSchema ImportError:尝试相对导入(未知)   父包

导入:

from .app import app

错误:

  

回溯(最近一次通话最后一次):文件“ tests.py”,第4行,在          从.app导入应用程序ModuleNotFoundError:没有名为“ .app”的模块; “ 主要”不是软件包

导入:

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

1 个答案:

答案 0 :(得分:0)

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

init 导入对象的示例。您使用

来自。导入应用,数据库

或创建一个名为app的程序包,并在其中输入 init .py