ファクトリ パターンで作成されたフラスコ アプリ用のカスタム manage.py スクリプトを使用しています。
このスクリプトは、サーバーの実行とテストの実行の両方を実行できる必要があります。外部ツールを使用してテストを実行しているため、テストを実行するためのアプリを作成する必要はありません。特定のコマンドを実行しているときにのみアプリを作成するにはどうすればよいですか?
私のスクリプトは現在次のようになっています。
import subprocess
import sys
from flask import current_app
from flask.cli import FlaskGroup
import click
from quizApp import create_app
@click.pass_context
def get_app(ctx, _):
"""Create an app with the correct config.
"""
return create_app(ctx.find_root().params["config"])
@click.option("-c", "--config", default="development",
help="Name of config to use for the app")
@click.group(cls=FlaskGroup, create_app=get_app)
def cli(**_):
"""Define the top level group.
"""
pass
@cli.command("test")
def test():
"""Set the app config to testing and run pytest, passing along command
line args.
"""
# This looks stupid, but see
# https://github.com/pytest-dev/pytest/issues/1357
sys.exit(subprocess.call(['py.test',
'--cov=quizApp',
'--flake8',
'--pylint',
'./']))
if __name__ == '__main__':
cli()
2 番目のグループを作成しようとしましたが、一度に「実行」できるのは 1 つのグループだけのように見えたので、これを解決する方法が正確にはわかりません。