如何在 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 中做同样的事情?我尝试将 auth
、authorization
等作为 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 测试框架的基本授权。
干杯!!
我写了一个 Flask 应用程序。在那里,我使用基本身份验证来限制某些 POST API 视图。 从 Python 请求中,我可以访问这些视图 -
print post(url, json=data, auth=('username', 'password'))
从卷曲,
curl -a username:password -d "data" url
如何在 app.post 中做同样的事情?我尝试将 auth
、authorization
等作为 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 测试框架的基本授权。 干杯!!