【发布时间】: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