【问题标题】:Can not import flask app无法导入烧瓶应用程序
【发布时间】:2018-08-20 10:19:06
【问题描述】:

我有这样的结构:

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

init.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?

【问题讨论】:

  • 你不应该。在您的测试中再次导入 from api import create_app 并在那里创建您的新应用实例。
  • 然后您可以self.app = create_app() 以提高可读性。
  • 你应该添加一个文件flask_api/__init__.py
  • @needtobe 它有效。您应该将您的评论发布为答案,以便我可以投票并将其标记为答案。
  • 当然,谢谢。

标签: python flask python-unittest


【解决方案1】:

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

这么简单:

from api import create_app

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

【讨论】:

    猜你喜欢
    • 2014-06-01
    • 2023-03-29
    • 1970-01-01
    • 2015-09-07
    • 2016-12-23
    • 2018-11-27
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多