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

Avi*_*Avi 2 python flask flask-restful flask-restplus

我写了一个Flask应用程序。在这种情况下,我正在使用基本身份验证来限制某些POST API视图。从Python请求中,我可以按以下方式访问这些视图:

print post(url, json=data, auth=('username', 'password'))
Run Code Online (Sandbox Code Playgroud)

从卷曲

curl -a username:password -d "data" url
Run Code Online (Sandbox Code Playgroud)

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

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

Avi*_*Avi 5

基本授权凭证存储在标头中,如下所示-

"Authorization": "Basic username:password"
Run Code Online (Sandbox Code Playgroud)

但是,该username:password部分是base64编码的。因此,可以使用base64模块执行相同的操作。

import base64

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

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

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