小编mag*_*003的帖子

如何在 python unittest 中模拟 http 请求帖子

第一次写单元测试。生产代码:

def get_session_token(organization_id):
    endpoint = get_endpoint(organization_id)
    response = requests.post(
        endpoint + "/some/url/part",
        data=json.dumps({
            "Login": CONFIG[organization_id]["username"],
            "Password": CONFIG[organization_id]["password"],
        }),
        headers={"Accept": "application/json"}
    )

    if response.status_code != 201:
        log.error("filename.get_session_token(%r): couldn't auth: %r %r",
                  organization_id, response, response.text)
        raise ValueError()

    return response.json()

def member(organization_id):
    session_key = get_session_token(organization_id)
    (some other code...)
Run Code Online (Sandbox Code Playgroud)

我需要测试会员。我有测试代码:

@patch('requests.post')
def test_member(self, mock_post):
    mock_post().status_code = 201
    mock_response = mock_post("some/url", data=ANY,
                              headers={"Accept": "application/json"})
    mock_response.status_code = 201
    (some other code...)
Run Code Online (Sandbox Code Playgroud)

每次我运行测试时,它总是引发 ValueError() (这是一个 403 错误)

我如何绕过 requests.post 并只得到 201?

谢谢你!

python python-requests python-unittest

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

python ×1

python-requests ×1

python-unittest ×1