IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python代码学习——接口自动化一(接口基础与requests) -> 正文阅读

[Python知识库]python代码学习——接口自动化一(接口基础与requests)

接口基础知识

  • 接口在广义上可以分为内部接口和外部接口,内部接口指的是公司内部的接口,例如登录;外部接口指的是调用第三方的接口,例如获取验证码、支付等等
  • 按照不同的请求协议,分为http、webservice、dubbo、socket,如何得知公司产品的协议?答案:问开发
  • 接口的本质:调用类里面的方法
  • http协议请求分为get、post、delete、head、optioon
  • webservice:经过封装的post请求

http请求

  • 一个http请求包括:head信息、响应信息、cookies、html、缓存
  • 请求头:注意user_Agent信息,它代表从那个客户端发过去的,例如域名
  • 请求头信息并不是每一次请求都要,但是如果请求中必须要请求头(headers),那么必须要加
  • 请求头跟随requesr中的hearers参数,以字典/json的形式发送
  • url:请求地址
  • get/post: 请求方法
  • 响应头:服务器返回回来的数据,一般是json

http常见的状态码

  • 200 :正常,一切正常,服务器接收请求也作出了正确的处理
  • 404:找不到,服务器不存在客户机所请求的资源
  • 502:网官错误,一般由服务器重启导致
  • 504:超时
  • 403:禁止 服务器理解客户请求,但是拒绝处理,通常由服务器上的文件或目录的权限导致
  • 304:未修改:表示客户机器缓存的版本是最新的,应该继续使用他(具体说直接取缓存的数据),比如说前端js,主要指的是静态资源
  • 302:临时重定向:请求地址的文档被移动或者删除,文档新的url在location响应头中给出
  • 500:服务器内部程序出现错误

cookies与session

  • cookies:在客户端村存储用户的一些数据,例如用户名或浏览器记录
  • seeeion:在服务器及用户的请求状态,一般默认时间是30min,超时重新登录,有session决定。一般以session_id的形式呈现出来
  • 机制:session_id会记录在cookies中,每次请求,cookies的所有信息都会传给服务器,服务器通过session_id来识别是否是同一个用户的请求,不是一个用户的话,会要求用户重新登录
  • 这种机制的原因:http请求是无状态的、无标记的
  • session存在过期,cookies没有过期

访问授权与鉴权

  • 鉴权:访问的接口是否正常,是否非法访问,越过前端访问,token
  • 授权:是否只有访问接口的权限 ,常出现在加密的或者收费的第三方接口,并不是任何人都可以访问的,如果要正常访问,必须要传key,一般来说是唯一的、全局的、动态的,具有一定的特征
  • 验签,常出现在app或SDK的应用中,参靠以下网址:https://blog.csdn.net/sjy8207380/article/details/79232644
  • jemeter和soapUI的使用方法:

如何用python做接口测试

  • 利用python去发起http请求
  • 可利用urlib、urlib2、requests模块都可实现利用python发起http请求
  • 在此只讲解requests模块
  • 首先安装requests第三方库
  • 导入requests模块
  • 如果遇到接口不会处理怎么办?http://docs.python-requests.org/zh_CN/latest/

Requests模块

  • 通过代码发起的请求与通过网站/app/接口测试工具发起的请求是一样的,都是从客户端发起
  • requests 的简单使用样例
import requests

url = 'https://xgsj.istarshine.com/login'
data = requests.get(url)
print(data)

Get请求

  • requests中的get模块,就是一个函数
  • 存在return的返回值,返回的是一个对象,可用变量来接受存储这个值,打印结果如下:
    在这里插入图片描述
  • get中存在三个参数,url、param和**kwargs;其中param存在默认参数None
  • url指的是数据地址,param指的是数据发送的格式,**kwargs指的是请求的时候带的参数
  • get返回的是一个request请求函数
  • 以下是get函数的的代码详情
    在这里插入图片描述

request 请求函数

  • request 中存在method、url和 **kwargs(关键字参数,不传入也可以)三个参数
  • 其中method指的是请求方式,url指的是请求地址,**kwargs是关键字参数默契意味着参数会以键值对的形式传入
  • 其中的关键字参数必须传requeat指定的那些参数,例如:method、url、data、json、params、headers、cookies、files、proxies(代理)、auth、time-out、verify、class、request等等
  • requeats支持的请求方式有许多种,`GET,OPTIONS,HEAD,POST,PUT,PATCH, 和 DELETE.都是http请求的method,但是常用的是get和post请求
    在这里插入图片描述

post请求

  • 如果一个url,使用get请求返回200,使用post请求返回404,说明url不支持post请求
  • post请求中存在url、data、json和关键字参数;url指的是请求地址;data和json是默认参数,含带默认值None;发送请求的数据一般有两种格式。如果数据是字典格式的,默认赋值给data。如果数据是json格式的,要用json=“”传给json。也就是说data = data;json=json
  • 存在return返回值,返回值是兑现对象在这里插入图片描述

requests模块的return返回

  • 不论是get还是post,其请求的结果return返回的都是对象,是个响应实体
  • 一个repose包含了响应头、响应正文和状态码

查看模块返回信息

  • `使用headers来查看响应
  • 使用text来查看正文
  • 使用status_code来查看code码
import requests

url = 'http://www.lemfix.com/topic/25'
data_1 = requests.post(url)
print(data_1)
data_headers = data_1.headers#查看响应头
data_code  = data_1.status_code#查看状态码
data_request_headers = data_1.request.headers
data_text = data_1.text#查看正文,返回的响应正文,不论是什么方式,都可以用此种方式
data_text = data_1.json()#查看正文,返回的响应正文,是字典/json格式,可用此种方式
print(data_headers)
int(data_code)
print(data_request_headers)
print(data_text)

查看cookies

  • 如果接口文档中没有明确的规定说,请求是json格式的,那么请求都是放在字典中的
  • cookies,向服务器表名请求是同一个账号发的
  • 一般来说,登录成功后会存在cookies
  • cookies的获取方式:直接用return返回值.cookies即可;因没有合适的网站,在此不做样例展示
  • cookies其实是一种 类字典的形式,可以用字典取值的方式进行取值
import requests

#登录数据
login='http://47.107.168.87:8080/futureloan/mvc/api/member/login'
login_data={'mobilephone':18688773467,'pwd':'123456'}
res = requests.post(url=login,data=login_data)
res_meg = res.text
cookies_mes = res.cookies
print(cookies_mes)#获取cookies
print(res_meg)

注意:

  • 什么时候带cookies?答:如果这个请求需要在用户登录成功之后操作,就需要带cookies
  • text和json都能够获取结果,用哪个比较好?答:如果要取值的话,建议使用字典
  • 用户登录成功后带cookies的才能操作的请求,有另外一种方式来解决吗?答:可以使用session来解决,解决方式如下,仅供参考:
import requests

# 登录数据
login = 'http://47.107.168.87:8080/futureloan/mvc/api/member/login'
login_data = {'mobilephone': 18000000001, 'pwd': '123456'}
# 充值
recharge = 'http://47.107.168.87:8080/futureloan/mvc/api/member/recharge'
recharge_data = {'mobilephone': 18000000001, 'amount': '1000'}
session_mes = requests.session()
res_login = session_mes.get(url= login,params=login_data)
res_recharge = session_mes.get(url= recharge,params=recharge_data)
print("登录结果",res_login)
print("充值结果",res_recharge)

将request写成一个类,支持两种请求

import requests

# class RequestHttp:#创建一个http请求的类

def http_request(url,param,mechod,cookie=None):
     if mechod=='get':
        res=requests.get(url,param,cookies=cookie)
     else:
        res=requests.post(url,param,cookies=cookie)
     return res

if __name__=='__main':
    #登录数据
    login='http://47.107.168.87:8080/futureloan/mvc/api/member/login'
    login_data={'mobilephone':18688773467,'pwd':'123456'}
    # 充值
    recharge='http://47.107.168.87:8080/futureloan/mvc/api/member/recharge'
    recharge_data={'mobilephone':18688773467,'amount':'1000'}

    #调用类
    # res_1=RequestHttp()
    res_login=http_request(login,login_data,'get')
    print('登录的结果是',res_login.json())
    print('-'*50)
    res_recharge=http_request(recharge,recharge_data,'post',cookie=res_login.cookies)
    print('充值的结果是',res_recharge.json())
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-30 12:42:21  更:2021-07-30 12:43:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/25 15:07:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计