Макет привязки вывода к функции Azure python

#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)