Выполнять команду CLI Flask, только если приложение находится в режиме разработки - PullRequest
0 голосов
/ 18 февраля 2019

Я интегрировал Flask-Migrate в свой проект.Когда я использую режим разработки (FLASK_ENV='development'), я обычно вызываю flask db migrate, чтобы применить изменения к базе данных SQLite.Но в режиме тестирования (FLASK_ENV='testing') я использую внутреннюю память (sqlite:///:memory:), и нет смысла вызывать db migrate, потому что это приведет к выдаче error .Есть ли какой-нибудь способ создать хук pre_execute в CLI Flask, чтобы проверить, какой ENV используется перед выполнением команды?Так, например, если FLASK_ENV установлен на testing, то вызов flask db init приведет к прерыванию выполнения команды.Я пробовал что-то подобное, но это не сработало:

@click.group(cls=FlaskGroup, create_app=create_app)
def cli():
    '''
    Main entry point.
    '''
    if app.config.ENV == ENV.TESTING:
        print('Running in TESTING mode...Aborting!')
        sys.exit(1)

Вопрос : Как я могу прервать выполнение команды cli при определенных настройках FLASK_ENV?

Редактировать: Я загружаю FLASK_ENV значение из .env файла.

1 Ответ

0 голосов
/ 20 февраля 2019

Хорошо, возможно, сначала я попытался решить проблему с неправильным подходом, но я наконец нашел способ справиться с ошибкой, упомянутой в моем вопросе.Поскольку я загружаю значение FLASK_ENV из файла, мне нужно вручную изменять его каждый раз, когда я хочу переключить среду.Итак, я изменил свою тестовую команду CLI, чтобы установить значение FLASK_ENV в testing каждый раз перед выполнением pytest:

@click.command()
def test():
    '''
    Run tests.
    '''
    os.environ['FLASK_ENV'] = ENV.TESTING
    pytest.main(['--rootdir', './tests'])

Теперь, даже если FLASK_ENV установлено в developmentв файле .env я все еще могу запускать тесты в режиме testing без изменения значения в файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...