工作生活

Web API03-使用python实现接口测试

2019-07-03  本文已影响0人  筱媛媛

前面2篇文章已经简单的介绍接口测试相关概念和HTTP协议基础,本篇文章主要就“使用python实现接口测试基础知识”进行展开讲解,包括使用requests库构建相应的HTTP请求、传递URL参数、定制请求头、请求消息体以及获取响应内容等。希望感兴趣的小伙伴可以坚持看下去同时欢迎提出宝贵的意见让我们一起进步!

01:构建相应的HTTP请求准备工作

1)构建相应的HTTP请求可选择的库:本次主要使用requests库。

内置的库:httplib、urllib2

第三方库:urllib3、requests、pyCurl

2)安装requests库:pip install requests

2)官方文档:http://docs.python-requests.org/zh_CN/latest/

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

上一篇下一篇

猜你喜欢

热点阅读