python接口测试之401错误的分析和解决(十六)

python接口测试之401错误的分析和解决(十六)

在接口的测试中,经常会遇到客户端向服务端发送一个请求,服务端返回401的错误,那么今天本文章就来说明在接口测试中如何分析以及解决该问题。

我们知道在HTTP返回的状态码中,401错误表示的是被请求的页面需要用户名和密码。401的错误详细的可以描述为:客户端发送请求抖到服务端,页面需要验证服务端会返回401的错误,见如下的错误信息:

401 UNAUTHORIZEDHeaders代码语言:javascript复制Content-Type: application/jsonWWW-Authenticate: Basic realm="Authentication Required"Content-Length: 37Server: Werkzeug/0.11.13 Python/2.7.12Date: Wed, 14 Mar 2018 14:57:24 GMT代码语言:javascript复制{ "error": "Unauthorized access"} 依据错误的信息可以获取到,发送的请求需要有通过HTTP的认证的认证信息,如果在浏览器中访问,会直接弹出需要输入用户名和密码的弹出框,见截图:

那么在HTTP的认证中,经常会被使用到认证方式分别是BASIC认证和DIGEST认证,我们具体来看BASIC的认证方式是一种流行,行业标准的身份验证方式,是在HTTP1.0中指定。主要是指使用用户ID和密码使用Base64编码标准进行编码,并通过HTTP进行传属,只有当用户ID和密码有效时,服务器才允许用户访问。

在我们的案例中,使用的认证方式是BASIC的认证方式,那么在客户端向服务端发送请求的时候,带上用户信息,再次请求可以成功。在postman中的Basic auth指定用户名和密码,见请求成功的信息:

Response (20.345s) - http://localhost:5000/hotel/username/200 OKHeaders代码语言:javascript复制Content-Type: application/jsonContent-Length: 308Server: Werkzeug/0.11.13 Python/2.7.12Date: Wed, 14 Mar 2018 15:09:33 GMT代码语言:javascript复制{ "datas":

[

{

"check in": "2018-03-08 08:20:10",

"check out": "2018-03-09 14:00:00",

"identity card": "23012919950425723X",

"phone": "13484545190",

"room number": "1104",

"userid": 1,

"username": "李四",

"vpl": "京AJ3585"

}

]

}当然我们也可以使用requests轻松的解决这部分,见实现的代码:

代码语言:javascript复制#!/usr/bin/env python

#-*-coding:utf-8-*-

import requests

r=requests.get(

'http://localhost:5000/hotel/username/',

auth=('wuya','admin'))

print r.text或者直接指定HTTPBasic,见修改后的代码:

代码语言:javascript复制#!/usr/bin/env python

#-*-coding:utf-8-*-

import requests

from requests.auth import HTTPBasicAuth

r=requests.get(

'http://localhost:5000/hotel/username/',

auth=HTTPBasicAuth('wuya','admin'))

print r.text

相关推荐

射箭游戏(共51款)
365_体育投注英超和欧冠

射箭游戏(共51款)

📅 08-13 👁️ 565
女士洗面奶哪个牌子好用,什么美白补水洗面奶好用到排行榜第一!
DNF氤氲之息深渊哪个怪容易出 要出氤氲之息刷哪个地图
[已解决]一直在保存.但无法保存成功.求解.[复制链接]
正在阅读:Win8系统电脑查看显卡配置参数的五种方法【详解】Win8系统电脑查看显卡配置参数的五种方法【详解】
0-0,无缘提前出线!英格兰被批踢默契球,极端情况:末轮0-4出局_手机网易网
诛仙世界黝钢在哪里挖
365_体育投注英超和欧冠

诛仙世界黝钢在哪里挖

📅 10-30 👁️ 6605
将“赓
mobile365体育

将“赓"翻译成英文

📅 06-30 👁️ 2638
《塞尔达传说:旷野之息》塞尔达克洛格兑换位置在哪里?
365_体育投注英超和欧冠

《塞尔达传说:旷野之息》塞尔达克洛格兑换位置在哪里?

📅 12-13 👁️ 9139