首页 > 解决方案 > 无法导入烧瓶应用程序

问题描述

我有这样的结构:

flask_api
    api
        __init__.py
        tests
            test_base.py
    manage.py

初始化.py 中:

def create_app():
    connexion_app = connexion.App(__name__, specification_dir='swagger/')
    connexion_app.add_api('output.yaml', resolver=RestyResolver('api'),  validate_responses=True)
    app = connexion_app.app

    CORS(app)
    app.register_blueprint(utils)
    ...
    return app

在 manager.py 中:

from api import create_app

app = create_app()
manager = Manager(app)

@manager.command
def test():
    print(app.root_path)
    tests = unittest.TestLoader().discover(
        'api/tests',
        pattern='test*.py'
    )
    result = unittest.TextTestRunner(verbosity=2).run(tests)
    if result.wasSuccessful():
        return 0
    return 1
if __name__ == '__main__':
    manager.run()

在 test_base.py 中:

from flask_api import app

现在,当我运行 python menage.py test 我得到错误:

  File "/home/flask_api/api/tests/test_base.py", line 7, in <module>
    from flask_api import app
ModuleNotFoundError: No module named 'flask_api

如何将应用程序导入 test_base?

标签: pythonflaskpython-unittest

解决方案


在您的测试中再次导入api import create_app并在那里创建您的新应用程序实例。

很简单:

from api import create_app

毕竟,为简单起见,您可以分配self.app = create_app()


推荐阅读