如何在 app.post 中发送身份验证凭据以对 API 视图进行 Flask 单元测试

How to send authentication credentials in app.post for Flask unit testing of API views

我写了一个 Flask 应用程序。在那里,我使用基本身份验证来限制某些 POST API 视图。 从 Python 请求中,我可以访问这些视图 -

print post(url, json=data, auth=('username', 'password'))

从卷曲,

curl -a username:password -d "data" url

如何在 app.post 中做同样的事情?我尝试将 authauthorization 等作为 post 的参数,但它们无效。

response = self.app.post(
            url,
            data=data,
            headers={
            'content-type': 'application/json'
            },
            follow_redirects=True
        )

我发现上述方法适合在单元测试中发送 post 请求。 但是这样做你应该记住你应该在测试配置中禁用 CSRF 保护。

class 测试配置(配置):

WTF_CSRF_ENABLED = 假

祝 GSOC 16 好运。

基本授权凭据存储在 header 中,如下所示 -

"Authorization": "Basic username:password"

但是 username:password 部分是 base64 编码的。所以可以使用 base64 模块来做同样的事情。

import base64

headers={
   'content-type': 'application/json',
   'Authorization': 'Basic %s' % base64.b64encode('username:password')
}

在上述情况下,授权将设置为 Basic dXNlcm5hbWU6cGFzc3dvcmQ=

这将允许您使用来自 Flask 测试框架的基本授权。 干杯!!