Pytest с Flask: простой способ настроить наше приложение без create_app()?Python

Программы на Python
Ответить
Anonymous
 Pytest с Flask: простой способ настроить наше приложение без create_app()?

Сообщение Anonymous »

У нас есть приложение Flask, в котором большая часть базового кода установки Flask находится в файле run.py в корне нашего приложения. В общем, многое из этого:

Код: Выделить всё

app = Flask(__name__)
app.debug = True
app.config(...)
app.config(...)

api = Api(app)
api.add_resource(resources.Registration, '/registration')
api.add_resource(...)
api.add_resource(...)
Я пытаюсь добавить к нему модульное тестирование, которого у нас сейчас нет. В качестве примера я примерно следую учебному проекту Flask (https://github.com/pallets/flask/tree/1 ... s/tutorial).

По сути, вы создаете все свое приложение как модуль, который можно импортировать, и этот модуль является фабрикой. Итак, __init__.py имеет функцию create_app, которая создает ваше приложение (https://github.com/pallets/flask/blob/1 ... laskr/init< /strong>.py). Я думаю, что это автоматически вызывается, когда модуль импортируется основным приложением во время нормальной работы, но его также можно вызвать явно в conftest.py (https://github.com/pallets/flask/blob/1.0.2/examples /tutorial/tests/conftest.py), который, я думаю (?), автоматически вызывается как часть запуска pytest.

Так что мой вопрос на самом деле довольно красивый. просто: есть ли достойный как мы можем запустить некоторые тесты pytest без рефакторинга кода нашего основного приложения в заводской модуль? Я не хочу слишком сильно касаться основного приложения... Я бы хотел оставить его как очень простую настройку, как мой код в начале этого вопроса.

Другими словами, это базовая настройка приложения в conftest.py руководства после удаления данных из БД:

Код: Выделить всё

@pytest.fixture
def app():

app = create_app({
'TESTING': True,
'DATABASE': db_path,
})

yield app
И мне нужно приложение без create_app. Но поскольку весь код нашего приложения находится только в базовом файле run.py, я не могу придумать другого способа сделать это, кроме как скопировать все и синхронизировать. Я не могу импортировать приложение из run.py, так как я не думаю, что это модуль.

Извините, что это так просто. - ни тестирование, ни импортные заявления не являются моими сильными сторонами.

Подробнее здесь: https://stackoverflow.com/questions/560 ... create-app
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»