python-3.x - 如何在测试文件中导入 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
解决方案
您需要修复一些导入才能运行代码...
从init .py导入对象的示例你使用吗
from . import app, db
或者创建一个名为 app 的包并在里面输入init .py
推荐阅读
- javascript - 单击功能更改具有相同类名的所有元素
- javascript - 根据操作系统在 Gulp 中运行不同的可执行字符串
- c# - 不重复的随机数生成器
- raspberry-pi - 无法直接登录树莓派,但可以通过 SSH 访问
- python - 如何使用 PyBind11 实现从 C++ 返回 Python Protobuf 对象的绑定?
- javascript - 岛屿数量 LeetCode Q200
- linux - Kubernetes 上的 Nginx(99:无法分配请求的地址)
- ios - 了解使用 AutoLayout/UIScrollView 设置约束时的 UIView 高度
- php - 获取非对象属性失败
- matlab - MATLAB - 绘制按类别分组的多个直方图