Python Flask переменная среды unittest - PullRequest
0 голосов
/ 04 марта 2020

У меня есть API в Flask с тремя конфигурационными файлами: development.cfg , production.cfg , testing.cfg

Эти файлы загружаются на основе FLASK_ENV здесь:

def create_app():
    app = Flask(__name__)

    app.config.from_pyfile(f"config/{app.config['ENV']}.cfg")

    app.redis = redis.Redis(host=app.config['REDIS_HOST'], port=app.config['REDIS_PORT'])
    app.mongo = MongoClient(host=app.config['MONGO_DB_HOST'], port=int(app.config['MONGO_DB_PORT']))

    init_resources(app)

    return app

Теперь у меня вопрос, как мне установить FLASK_ENV при выполнении моих тестов? У меня есть, например, тест, в котором мне нужно проверить SECRET_KEY, который также основан на среде, но я получаю значение от производства.

Я спрашиваю себя, должен ли я передать параметр в create_app, что-то вроде:

def create_app(env):
    app = Flask(__name__)

    environment = app.config['ENV'] if not env else env

    app.config.from_pyfile(f"config/{environment}.cfg")

    app.redis = redis.Redis(host=app.config['REDIS_HOST'], port=app.config['REDIS_PORT'])
    app.mongo = MongoClient(host=app.config['MONGO_DB_HOST'], port=int(app.config['MONGO_DB_PORT']))

    init_resources(app)

    return app

Тогда в моем тесте я бы сделал что-то подобное:

class TestLoginMethods(unittest.TestCase):
    def setUp(self):
        self.app = create_app(env='testing')
        ....

Имеет ли это смысл?

...