前面2篇文章已经简单的介绍接口测试相关概念和HTTP协议基础,本篇文章主要就“使用python实现接口测试基础知识”进行展开讲解,包括使用requests库构建相应的HTTP请求、传递URL参数、定制请求头、请求消息体以及获取响应内容等。希望感兴趣的小伙伴可以坚持看下去同时欢迎提出宝贵的意见让我们一起进步!
01:构建相应的HTTP请求准备工作
1)构建相应的HTTP请求可选择的库:本次主要使用requests库。
①内置的库:httplib、urllib2
②第三方库:urllib3、requests、pyCurl
2)安装requests库:pip install requests
02:构建各种HTTP请求方法
1)G E T请求:r=requests.get('http://localhost/xxx/')
2)POST请求:r=requests.post('http://localhost/xxx/')
3)P U T请求:r=requests.put('http://localhost/xxx/')
4)DELETE请求:r=requests.delete('http://localhost/xxx/')
import requests
(1)构建GET请求
res=requests.get('http://localhost/api/mgr/sq_mgr/?action=list_course&pagenum=1&pagesize=20')
(2)构建POST请求
res = requests.post('http://localhost/api/mgr/sq_mgr/')
(3)构建PUT请求
res=requests.put('http://localhost/api/mgr/sq_mgr/')
(4)构建DELETE请求
res=requests.delete('http://localhost/api/mgr/sq_mgr/')
03:传递URL参数(params)
1)概述:如果手工构建 URL,那么数据会以键/值对的形式置于 URL 中,跟在一个问号的后面。
2)关键字:params
接口文档URL参数如下:
(1)请求语法:GET /api/mgr/sq_mgr/?action=list_course&pagenum=1&pagesize=20 HTTP/1.1
(2)url请求参数:
action 填写list_course,表明是要列出所有课程信息
pagenum 表示当前要显示的是第几页,目前固定填写1
pagesize 表示一页最多显示多少条课程信息,目前固定填写20
(3)python代码实现传递URL参数:
res=requests.get('http://localhost/api/mgr/sq_mgr/',
#传递URL请求参数:params
params={
'action': 'list_course',
'pagenum': '1',
'pagesize': '20',
})
pprint.pprint(res.json())
04:定制请求头(headers)
1)概述:如果为请求添加 HTTP 头部,只要简单地传递一个 dict给headers参数就可以。
2)关键字:headers
接口文档URL参数如下:
(1)请求语法:POST/api/mgr/sq_mgr/ HTTP/1.1
(2)请 求 头:Content-Type: application/x-www-form-urlencoded
(3)python代码实现传递HTTP请求头:
res=requests.post('http://localhost/api/mgr/sq_mgr/',
#传递HTTP请求头:headers
headers={
'Content-Type': 'application/x-www-form-urlencoded',
})
05:定制请求消息体(data、json)
1)请求体类型为“Content-Type: application/x-www-form-urlencoded”或“xml”
①实现方式:只需简单地传递一个字典给 data 参数。
②关键字:data
2)请求体类型为“Content-Type: application/json”
①实现方式:只需简单地将字典直接传递给json参数。
②关键字:json
③请注意:如果消息体内容是json则传递的是一个数据对象,会自动把数据对象转换为json格式的字符串。
接口文档请求体内容如下:
(1)请求语法:POST /api/mgr/sq_mgr/ HTTP/1.1
(2)请求体类型:Content-Type: application/x-www-form-urlencoded
(3)请求体内容:
action 必填 填写add_course,表明是为了创建课程
data 必填 存储创建课程的信息,包括名称、描述、显示次序。为json格式。例如:
{
"name":"python",
"desc":"python基础课程",
"display_idx":"4"
}
(4)python代码实现传递HTTP消息体:
res = requests.post('http://localhost/api/mgr/sq_mgr/',
#传递HTTP消息体:data
data={
'action':'add_course',
'data':'''
{
"name":"selenium",
"desc":"selenium基础课程",
"display_idx":"1"
}'''},
#传递HTTP消息体:json(直接传递)
json = {
"action": "add_course_json",
"data" : {
"name" :"初中政治",
"desc" :"初中政治基础",
"display_idx" :"2"}
})
06:获取响应内容
1)获取响应状态码:res.status_code
2)获取响应消息头:res.headers
3)获取响应消息头部分字段:res.headers['Content-Type']
4)获取JSON响应消息体内容:res.json()
5)获取原始响应消息体内容:res.text
网友评论