首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于测试的APIClient报头

用于测试的APIClient报头
EN

Stack Overflow用户
提问于 2021-08-29 21:28:01
回答 1查看 421关注 0票数 1

我正在使用django rest_framework并使用一个API,该API会带来一个头部值来验证发送方。当我使用APIClient测试我制作的网络钩子时,我遇到了问题。

代码语言:javascript
复制
@pytest.mark.django_db
def test_change_status_webhook_ok(webhook_client, status_changes):
    fixture_signature = (
        "51b93156c361bfce14c527ddcb27cc3791e9ea6ede23bc5a56efa3be28e6a54d"
    )

    url = reverse("webhook_v1:notification")
    response = webhook_client.post(
        url,
        json.dumps(status_changes),
        content_type="application/json",
        **{"X-Extserv-Signature": fixture_signature}
    )

    assert response.status_code == 200

问题是当我试图从头获取Signature签名时。我试过:

代码语言:javascript
复制
ret = request.headers.get("X-Extserv-Signature")            

只有当我收到邮递员的请求时,这种方式才能奏效。但是,当我执行来自APIClient的请求时,下面的表单可以工作,并且无法使用相同的代码获得值。

代码语言:javascript
复制
ret = request.META["X-Extserv-Signature"]

您知道如何将X-Extserv-Signature键值设置为APIClient中的标头吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-30 01:59:53

来自

一个不区分大小写的、类似于dict的对象,它提供对所有HTTP前缀标头的访问

request.headers将只包含HTTP前缀的标头,因此:

代码语言:javascript
复制
    response = webhook_client.post(
        url,
        json.dumps(status_changes),
        content_type="application/json",
        **{"HTTP_X_EXTSERV_SIGNATURE": fixture_signature} # <-- Use this
    )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68977033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档