1

ファクトリ パターンで作成されたフラスコ アプリ用のカスタム 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 つのグループだけのように見えたので、これを解決する方法が正確にはわかりません。

4

2 に答える 2

0

追加する必要があります:

cli.add_command(test)

前:

if __name__ == '__main__':
    cli()

そして、それがあなたがしなければならない唯一のことであるかどうかはわかりません。私もこれを勉強していて、混乱しています。ただし、FlaskGroup にコマンドを追加する場合は、それを行う必要があります。フラスコプロジェクトで Factory と CLI を使用したいときに混乱します。最後に、Flask-Script 拡張機能を試す必要があるかもしれませんが、少なくとも機能します。

于 2016-09-30T07:52:50.637 に答える