Я пытаюсь локально протестировать функцию Python, которую я надеюсь развернуть как облачную функцию Google.Эти функции, по-видимому, в основном основаны на Flask, и я обнаружил, что лучший способ вернуть JSON - использовать функцию Flask jsonify.Кажется, это работает нормально при развертывании, но я хочу настроить некоторые локальные модульные тесты, и вот где я застрял.Простое добавление строки для импорта jsonify приводит к следующей ошибке:
RuntimeError: Working outside of application context.
В Stackoverflow есть несколько публикаций, которые, по-видимому, имеют отношение к этой проблеме, но функции облака Google в действительности не следуют шаблону Flask.Насколько я могу судить, нет контекста приложения, и нет декораторов.Все примеры, которые я нашел, не были полезны для этого конкретного случая использования.Может ли кто-нибудь предложить метод построения модульного теста, который будет учитывать контекст приложения и все же соответствовать шаблону GCF здесь.
У меня есть unittest, которым я могу поделиться, но вы увидите ту же ошибку, когда вызапустите следующую процедуру с вызовом метода внутри main .
import os
import json
from flask import jsonify
from unittest.mock import Mock
def dummy_request(request):
request_json = request.get_json()
if request_json and 'document' in request_json:
document = request_json['document']
else:
raise ValueError("JSON is invalid, or missing a 'docuemnt' property")
data = document
return jsonify(data)
if __name__ == '__main__':
data = {"document":"This is a test document"}
request = Mock(get_json=Mock(return_value=data), args=data)
result = dummy_request(request)
print(result)