У меня есть 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')
....
Имеет ли это смысл?