Python接口Requests库从入门到精通

简介:现在接口测试工具有很多种例如:postman,soapui,jemter等等,学会使用代码进行接口测试便于维护与扩展

第一部分:安装Python及Request模块库

1.安装python(自行安装)
2.安装requests(linux和mac os可能会遇到权限问题,sudo安装即可)
pip install -U requests

首先来说说对Requests库主要方法Api.py解析参数介绍: 

# -*- coding: utf-8 -*-
def request(method, url, **kwargs):
    """Constructs and sends a :class:`Request <Request>`.
    Usage::
      >>> import requests
      >>> req = requests.request('GET', 'https://httpbin.org/get')
      <Response [200]>
    """
    with sessions.Session() as session:
        return session.request(method=method, url=url, **kwargs)

def get(url, params=None, **kwargs):
    r"""Sends a GET request.
    :rtype: requests.Response
    """
    kwargs.setdefault('allow_redirects', True)
    return request('get', url, params=params, **kwargs)

def options(url, **kwargs):
    r"""Sends an OPTIONS request.
    :rtype: requests.Response
    """
    kwargs.setdefault('allow_redirects', True)
    return request('options', url, **kwargs)

def head(url, **kwargs):
    r"""Sends a HEAD request.
    :rtype: requests.Response
    """
    kwargs.setdefault('allow_redirects', False)
    return request('head', url, **kwargs)

def post(url, data=None, json=None, **kwargs):
    r"""Sends a POST request.
    :rtype: requests.Response
    """
    return request('post', url, data=data, json=json, **kwargs)

def put(url, data=None, **kwargs):
    r"""Sends a PUT request.
    :rtype: requests.Response
    """
    return request('put', url, data=data, **kwargs)

def patch(url, data=None, **kwargs):
    r"""Sends a PATCH request.
    :rtype: requests.Response
    """
    return request('patch', url, data=data, **kwargs)

def delete(url, **kwargs):
    r"""Sends a DELETE request.
    :rtype: requests.Response
    """
    return request('delete', url, **kwargs)

通过上述的Requests.Api.py文件由此可以的出一个结论:

requests.request(method, url, **kwargs)
    method  : 请求方式,对应get/put/post等7种
    url     : 拟获取页面的url链接
    **kwargs: 访问参数一共有13个
method:请求方式
**kwargs : 控制访问的参数为可选项(以下是各种访问参数)
params  : 字典或字节序列作为参数增加到url中
data    : 字典、字节序列或文件对象作为Request的内容
json    : JSON格式的数据作为Request的内容
headers : 字典,HTTP定制头(模拟浏览器)
cookies : 字典或CookieJar、Request中的cookie
auth    : 元组,支持HTTP认证功能
files   : 字典类型传输文件
timeout : 设定超时时间秒为单位
proxies : 字典类型,设定访问代理服务器,可以增加登录认证
allow_redirects : True/False默认为True重定向开关
stream  : True/False,默认为True获取内容立即下载开关
verify  : True/False,默认为True认证SSL证书开关
cert    : 本地SSL证书路径

最常用的七大请求方法HTTP协议和Requests库功能一致性比较及对资源的操作 

HTTP协议    Requests库方法    功能一致性
GET         requests.get()      一致   请求获取URL位置的资源
HEAD        requests.head()     一致   请求获取URL位置资源的响应消息报告,即获取该资源的头部信息
POST        requests.post()     一致   请求向URL位置的资源后附加新的数据
PUT         requests.put()      一致   请求向URL位置存储一个资源,覆盖原URL位置的资源
PATCH       requests.patch()    一致   请求局部更新URL位置的资源,即改变该处资源的部分内容
DELETE      requests.delete()   一致   请求删除URL位置存储的资源
OPTIONS     request.options()

r = requests.request('GET', url, **kwargs)
r = requests.request('HEAD', url, **kwargs)
r = requests.request('POST', url, **kwargs)
r = requests.request('PUT', url, **kwargs)
r = requests.request('PATCH', url, **kwargs)
r = requests.request('delete', url, **kwargs)
r = requests.request('OPTIONS', url, **kwargs)

再来了解一下关于网络通信协议的常用的Code点击这个跳转常见的HTTP状态码以及错误分析

第二部分:基础部分

1.简单的get接口请求

import requests   #导入requests模块
response=requests.get("https://www.baidu.com/")#对baidu接口进行get请求,并获取响应信息
#以下对响应信息response解析打印
print(response.text) 
print(response.content)
#response.text是以str得形式返回得响应信息
#response.content是以bytes形式返回

2.获取状态码

print(response.status_code)
##输出
200

3.获取headers信息

print(response.headers)
##输出
{'Content-Type': 'text/html; charset=utf-8', 'Content-Length': '6', 'Server': 'nginx/0.15.1 Python/3.7.0', 'Date': 'Sun, 27 Jun 2019 00:55:27 GMT'}

4.获取cookies信息

print(response.cookies)
##输出
<RequestsCookieJar[]>
#注意:这里与其他部分稍有不同,返回cookies的信息为cookies对象,而不是像前面部分返回得是字符串或者字典,cookies解析部分在后面会进行单独说明

5.获取请求url

print(response.url)
###输出
http://localhost:5000/hello

6.获取反序列化后的得信息:

print(response.json())
###输出:
{'name': 'john'}
#注意:只有在返回信息为json格式时才能使用,否则会报json异常

7.获取响应时间

print(response.elapsed)
print(response.elapsed.microseconds)
print(response.elapsed.seconds)
print(response.elapsed.total_seconds())
##输出
0:00:00.003773
3773
0
0.003773
发布了35 篇原创文章 · 获赞 16 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/qq_38795430/article/details/97575575