#python #unit-testing #azure-functions
#python #модульное тестирование #azure-функции
Вопрос:
Я хочу создать модульный тест для моих функций Azure на Python, используя unittest. Я следую примеру в https://learn.microsoft.com/en-us/azure/azure-functions/functions-reference-python#unit-testing , но я добавил привязку вывода больших двоичных объектов к моей триггерной функции Http, которую я не знаю, как использовать при ручном вызове моей функции.
Это моя функция.json:
{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"post"
],
"route" : "normalize"
},
{
"type": "http",
"direction": "out",
"name": "$return"
},
{
"name": "todb",
"type": "blob",
"direction": "out",
"path": "carga-db/web_{rand-guid}.csv",
"connection": "bbdstorage_STORAGE"
}
]
}
И это мой класс TestCase:
import unittest
import azure.functions as func
from web_api import main
class TestFunction(unittest.TestCase):
def test_my_function(self):
# Construct a mock HTTP request.
req = func.HttpRequest(
method='POST',
body=None,
url='/api/normalize')
# Call the function.
resp = main(req, #what to put here?)
# Check the output.
self.assertEqual(
resp.get_body(),
b'Hello Test',
)
Комментарии:
1. Вы когда-нибудь находили решение здесь? Я сталкиваюсь с точно такой же проблемой (с другой привязкой вывода — хотя это не должно иметь значения) без надежной документации по теме?
2. Нет, не совсем 🙁
3. Здесь та же проблема. Документация просто выявляет самый простой случай, который заключается в том, что мы запускаем только http-запрос и возвращаем http-ответ и ничего больше..
4. Видел в другом stackoverflow, что вы можете использовать макет из модуля unittest, чтобы имитировать привязку следующим образом: outblob = mock . Макет () # Вызов функции. соответственно = main(req, outblob)