单元测试 Python Azure Function:如何使用 JSON 负载构建模拟测试请求消息?

Ste*_*ven 3 python unit-testing azure

我想对我的 Python Azure 函数进行单元测试。我正在关注微软文档。

文档模拟了对该函数的调用,如下所示

req = func.HttpRequest(
            method='GET',
            body=None,
            url='/api/HttpTrigger',
            params={'name': 'Test'})
Run Code Online (Sandbox Code Playgroud)

我想这样做,但将参数作为 JSON 对象传递,以便我可以跟踪req_body = req.get_json()函数代码的分支。我想我可以通过像这样的函数调用来做到这一点

req = func.HttpRequest(
            method='GET',
            body=json.dumps({'name': 'Test'}),
            url='/api/HttpTrigger',
            params=None)
Run Code Online (Sandbox Code Playgroud)

如果我像这样构造调用,req.get_json()则会失败并显示错误消息AttributeError: 'str' object has no attribute 'decode'。

如何使用 JSON 输入参数构造请求?这应该是微不足道的,但我显然错过了一些明显的东西。

Ste*_*ven 5

如果我按如下方式构造我的模拟调用:

import json


req = func.HttpRequest(
            method='POST',
            body=json.dumps({'name': 'Test'}).encode('utf8'),
            url='/api/HttpTrigger',
            params=None)
Run Code Online (Sandbox Code Playgroud)

然后我就可以成功调用req.get_json(). 感谢@MrBeanBremen 和@JoeyCai 为我指明了正确的方向,即不要调用GET并将消息设置为字节字符串。