[英]How to test an Azure Function that uses Context?
I'm writing an Azure Function that uses context (for monitoring purposes), this is what my function looks like:我正在写一个使用上下文的 Azure Function(用于监视目的),这就是我的 function 的样子:
import logging
import json
import azure.functions as func
def main(req: func.HttpRequest, context: func.Context) -> func.HttpResponse:
logging.info(
"{}\t{}".format(
context.invocation_id, context.function_name
)
)
reponse = "foo"
return func.HttpResponse(json.dumps(reponse), mimetype="application/json")
And I want to write integration test for this function, like this:我想为这个 function 编写集成测试,如下所示:
import unittest
import azure.functions as func
from MyFunc import main
class TestMyFunc(unittest.TestCase):
def test_myfunc(self):
req = func.HttpRequest(
method="GET",
body=None,
url="/api/myfunc",
)
ctx = ??
reponse = main(req, ctx) # This part fails because of the context
self.assertEqual(
reponse.get_body(),
b'foo',
)
How can I create a Context object to pass to my Azure Function?如何创建上下文object 以传递给我的 Azure Function?
Looks like Context
is an ABC(Abstract Base Class) class , so you cannot directly instantiate.看起来Context
是一个 ABC(Abstract Base Class) class ,所以你不能直接实例化。 Instead you could subclass the func.Context
class and use the instance of that class as ctx
相反,您可以子类化func.Context
class并将该 class 的实例用作ctx
class MockContext(func.Context):
def __init__(self, ii, fn, fd):
self._invocation_id = ii
self._function_name = fn
self._function_directory = fd
@property
def invocation_id(self):
return self._invocation_id
@property
def function_name(self):
return self._function_name
@property
def function_directory(self):
return self._function_directory
ctx = MockContext("Some dummy values")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.