@TOCPython requests库接口自动化中是普遍使用的第三方库,本文主要介绍requests的常用方法、属性及在接口自动化测试中的二次封装调用。

一、requests安装

requests库是属于第三方库,需要安装后才可使用,安装步骤如下:

pip安装

pip install requests

二、接口请求的常用方法介绍

2.1 put、get、delete、put方法

与restful风格保持一致,requests库提供了get()、put()、delete()、post()四个方法,调用方式和参数内容如下:

import requests
res = requests.get(url, params=None, **kwargs)             #发送get请求
res = requests.post(url, data=None, json=None, **kwargs)   #发送post请求
res = requests.delete(url, **kwargs)                       #发送delete请求
res = requests.put(url, data=None, **kwargs)               #发送put请求

参数说明:

  • url----请口请求的url
  • params----接口入参,get请求的参数,以字典方式传入
  • json----接口入参,post请求的参数,参数类型为json格式
  • data----接口入参,post请求和put请求的入参,在post请求中除json格式外,其它参数类型均使用data

2.2 request方法

以上四个方法作为requests接口请求的基本方法,均调用了requests的request方法,request方法及参数介绍如下:

import requests
res = requests.request(method, url, **kwargs)

参数说明

  • method----接口请求方式,值分别对应以上四个方法名称,例如:请求方式为get,则method=‘get’
  • url----接口请求的url地址

2.3 session.request()

requests的session.py模块的Sessio()类的对象用于创建会话,实现跨请求保持对话,可以使用以下两种方式创建session会话对象创建:

session = requests.session()   #通过调用session模块的session()方法创建,session方法调用了Session类
session = requests.Session()   #直接通过类名创建session会话对象

通过查看源代码发现,requests.request()底层调用其实是session对象的request()方法,故通过session的request()也可以实现接口的调用,方法和参数说明如下:

import requests
session = requests.session()
session.request(self, method, url,
            params=None, data=None, headers=None, cookies=None, files=None,
            auth=None, timeout=None, allow_redirects=True, proxies=None,
            hooks=None, stream=None, verify=None, cert=None, json=None)

method----接口请求方式,值分别对应以上四个方法名称,例如:请求方式为get,则method=‘get’
url----接口的url地址
params----get请求的参数
data----post和put请求除json格式以外的参数
headers----接口请求头
cookies----请求头里面的cookie信息
files----用于文件上传,传参文件流
allow_redirects----是否允许重定向
json ----post请求的json格式传参

在Session类的注释中,举例说明了Session类及其请求get接口两种使用方法,如下:

python接口封装 有入参对象 python封装第三方接口_python接口封装 有入参对象

2.4 一个接口请求的五种写法

综上,对于一个get请求,我们可以通过以下五种方式实现接口调用:

  1. 使用requests.get()
requests.get(url=url,params=params)
  1. 使用requests.request()
requests.request(method='get',url=url,params=params)
  1. 先通过session()方法创建session,再调用request()方法
session = requests.session()
session.request(method='get',url=url,params=params)
  1. 选通过Session()方法创建session,再调用request()方法
session = requests.Session()
session.request(method='get',url=url,params=params)
  1. 使用with
with  requests.Session() as session:
    session.request(method='get',url=url,params=params)

三、requests接口响应常用方法

res.text。 返回字符串
res.content返回字节数据
res.json()返回json数据,python 字典
res.status_code返回状态码
res.reason返回状态信息
res.cookies返回响应cookie
res.encoding返回响应编码
res.headers返回响应头
res.request.headers返回请求的一些数据

四、自动化接口测试request请求封装

import requests

class HttpClient:

    def __init__(self):
        self.session = requests.session()

    def http_request(self, method, url, **kwargs):
        """
        :param method: 接口请求方式,与Restful一致,入参可以为:get,put,delete,post等
        :param url: 接口请求的url地址
        :param kwargs: 请求其它参数,包括params, data, headers, cookies, files,
            auth, timeout, allow_redirects, proxies,
            hooks, stream, verify, cert, json等
        :return:返回响应体
        """
        response = self.session.request(method, url, **kwargs)
        return response