学习网址:    https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dscpm/ff75b907-415d-4220-89ec-117a39805a6d

      https://www.runoob.com/http/http-methods.html

      https://blog.csdn.net/lihao21/article/details/51857385

      https://blog.csdn.net/u011655220/article/details/80285608

      https://2.python-requests.org//zh_CN/lat

正文:

Python中requests的开发哲学:

   Requests 是以 PEP 20 的箴言为中心开发的

  1. Beautiful is better than ugly.(美丽优于丑陋)
  2. Explicit is better than implicit.(直白优于含蓄)
  3. Simple is better than complex.(简单优于复杂)
  4. Complex is better than complicated.(复杂优于繁琐)
  5. Readability counts.(可读性很重要)
  6. 对于 Requests 所有的贡献都应牢记这些重要的准则。

Python接口测试框架搭建基本思路流程图:

利用python中的requests库或urllib.request库进行框架中需要用到的功能的调用以及实现。

在python中requests库的便利性以及包容性和可操作性都优于urllib.request库。

1. 发送http(https)请求

发送http(https)请求并构造一个url来获得一个response对象,由此来在以后的步骤中获取http(https)请求的响应结果,发送请求的方式有以下八种:

requests.get(‘url’, params=None, **kwargs)

#请求指定的页面信息,并返回实体主体

requests.post(‘url’, data=None, json=None, **kwargs)

#向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改

requests.put(‘url’, data=None, **kwargs)

#从客户端向服务器传送的数据取代指定的文档的内容

requests.delete(‘url’, **kwargs)

#请求服务器删除指定的页面

requests.head(‘url’, **kwargs)

#类似get,返回的响应中没有具体的内容,用于获取报头

requests.patch(url, data=None, **kwargs)

#回显服务器收到的请求,主要用于测试或诊断

Requests.options(‘url’,**kwargs)

#允许客户端查看服务器的性能

其中url为新request对象的url,params为要在request对象的查询字符串中发送的字典或者字节。Data参数为字典或元组列表、字节或类似文件的对象,此参数在request的响应正文中发送。Json参数为json数据,此数据在request的响应正文中发送。
集成输出用法为变量名.url。

2. 请求HTTP响应正文

一个http响应的格式大多为响应行/响应报头/(空行)响应正文。利用requests 库对此响应进行封装将其封装成一个response对象,在调用时可以从此对象中获取响应正文的内容。

利用response.text方法可以对响应的正文文本内容进行获取,使用方法为:

变量名.text

Requests库会自动对响应正文进行解码,若response.encoding为空,编码是通过chardet.detect方法(根据给定字节来进行猜测来返回它的编码,一般都是很准的)来进行获取的。当可以完全确定响应的编码方式,也可以先对response.encoding中的charset进行设置,然后再通过response.text获取响应正文,这时解码所得的响应正文就是charset的值了。

利用response.content可以获取响应正文中的二进制字节内容,如果响应正文的内容形式确定是一json串,则可以使用response.json()方法对响应正文进行json decode操作并返回一个字典项来对此json串进行解码翻译。

变量名.content

变量名.json

3. 返回并识别响应状态

在requests库中利用status_code()方法来对http请求响应的状态码进行标识,其使用方法为:

变量名.status_code

在对状态码进行标识后,利用raise_for_status方法对状态码进行状态识别,如果响应返回的是404一类,使用此方法会抛出异常,若返回的状态码为200,则使用此方法并不会抛出异常。此方法的使用格式为:

变量名.raise_for_status

 

4. 获得http响应结果的头部的相关信息或定制http请求的头部。

Requests库中的headers属性是一个字典,可以由此获得http响应结果的头部的相关信息,其使用方法为:

变量名.headers

Requests支持定制http请求的头部。为此,我们只需要构造一个字典,然后传给requests.get()的headers参数即可。

url = 'http://httpbin.org/headers'

headers = {'user-agent': 'my-app/0.0.1'}

r = requests.get(url, headers=headers)

print r.text

http://httpbin.org/headers 这个链接可以输出请求的头部,由于我们修改了请求头的user-agent字段,所以会访问这个链接会返回:

{

“headers”: {

“Accept”: “/“,

“Accept-Encoding”: “gzip, deflate”,

“Host”: “httpbin.org”,

“User-Agent”: “my-app/0.0.1”

}

}

5. 发送post请求

http请求由请求行,请求报头,消息主体构成,若提交的数据类型为post型,服务端会根据请求头中的Content-Type字段来获取请求中的消息主体是用何种方式进行编码的,之后再对消息主体进行解体。消息主体具体的编码方式有三种:

application/x-www-form-urlencoded 
# 最常见post提交数据的方式,以form表单形式提交数据。

application/json 
# 以json串提交数据。

multipart/form-data 
# 一般使用来上传文件。

同时Reqeusts支持以form表单形式发送post请求,只需要将请求的参数构造成一个字典,然后传给requests.post()的data参数即可。还可以以json形式(传给data参数)和multipart形式(files参数)发送post请求。

6. 使用requests库可以轻松获取响应的cookies和设置请求的cookies

利用requests.cookies可访问响应带上的cookies,此方法为响应cookies的字典。使用格式为:

变量名.cookies

也可以发送带cookies的请求,直接将发送过去的url参数后加上此参数并赋值即可。

7. 请求超时

Requests允许对一个http请求设置超时的时间,只需要在requests.get()或者requests.post()方法的timeout参数设置一个值(单位为秒)即可,超出此请求响应时限系统就会抛出异常。

url = 'http://httpbin.org/get'

r = requests.get(url, timeout=0.001)

8. 异常处理

在发送http请求时,由于各种原因,requests可能会请求失败而抛出异常。常见的异常包括:

ConnectionError

# 由于网络原因,无法建立连接。

HTTPError

# 如果响应的状态码不为200,Response.raise_for_status()会抛出HTTPError 异常。

Timeout

# 超时异常。

TooManyRedirects

若请求超过了设定的最大重定向次数,则会抛出一个 TooManyRedirects 异常。

所有requests抛出的异常都继承自 requests.exceptions.RequestException类。

requests库写接口测试框架初学习的更多相关文章

  1. 使用python requests库写接口自动化测试--记录学习过程中遇到的坑(1)

    一直听说python requests库对于接口自动化测试特别合适,但由于自身代码基础薄弱,一直没有实践: 这次赶上公司项目需要,同事小伙伴们一起学习写接口自动化脚本,听起来特别给力,赶紧实践一把: ...

  2. 使用Python的requests库进行接口测试——session对象的妙用

    from:http://blog.csdn.net/liuchunming033/article/details/48131051 在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有 ...

  3. 用python requests库写一个人人网相册爬虫

    担心人人网会黄掉,写个爬虫,把我的相册照片都下载下来.代码如下: # -*- coding: utf-8 -*- import requests import json import os def m ...

  4. 利用Requests库写爬虫

    基本Get请求: #-*- coding:utf-8 -*- import requests url = 'http://www.baidu.com' r = requests.get(url) pr ...

  5. vue框架初学习的基本指令

           学习地址:<ahref="https: cn.vuejs.="" org="" "="" targe ...

  6. 使用Python的requests库作接口测试——对HTTP动词的支持

    Requests提供了几乎所有HTTP动词的功能:GET,OPTIONS, HEAD,POST,PUT,PATCH和DELETE. 动词GET-查看提交信息 HTTP GET是一个幂等的方法,从给定的 ...

  7. 用Python的requests库作接口测试——对响应进行迭代

    使用 requests.Response.iter_lines() 方法,可以很方便地对流式API(例如 Twitter的流式API )的响应进行迭代. 简单地设置 stream 为 True 便可以 ...

  8. 用Python的requests库作接口测试——上传文件

    POST一个多部分编码(Multipart-Encoded)的文件 Requests使得上传多部分编码文件变得很简单: >>> url = 'http://httpbin.org/p ...

  9. 使用Python的requests库作接口测试——请求对象与响应对象

    任何时候调用requests.*()操作接口时,我们都在做两件事情: 1.构建一个Request对象,该对象被发送到服务器去请求或查询一些资源: 2.一旦requests得到一个从服务器返回的响应,就 ...

随机推荐

  1. Python3 视频教程,全网最全的视频教程,爬虫,从入门到实战

    需要联系我:QQ:1844912514 最新Python基础班+就业班视频教程 链接: python分布式爬虫打造搜索引擎链接: https://pan.baidu.com/s/1N7HL7U0gQX ...

  2. Linux调整日期时间

    Linux日期不准确,要更改 Linux 系统整个系统范围的时区可以使用如下命令: sudo rm -f /etc/localtime sudo ln -s /usr/share/zoneinfo/A ...

  3. 在Asp.Net Core中集成Kafka

    在我们的业务中,我们通常需要在自己的业务子系统之间相互发送消息,一端去发送消息另一端去消费当前消息,这就涉及到使用消息队列MQ的一些内容,消息队列成熟的框架有多种,这里你可以读这篇文章来了解这些MQ的 ...

  4. 【python 字符串】 字符串的相关方法(二)

    查找元素所在的第一个的索引位置    text.find() 可有开始和结束位置查找  find('ex',3,6) # 查找元素的索引位置 text = 'alexalex' ret = text. ...

  5. element 给table的个别表格框添加样式 ---重构里面的组件

    <el-table ref="singleTable" :show-header='false' :data="tableData" align='cen ...

  6. oracle篇 之 单行函数

    一.分类 1.单行函数:需要处理的行数和返回结果的行数相等(单行进单行出) 2.多行函数(组函数):返回结果的行数少于要处理的行数(多行进单行出) 二.字符处理相关函数 1.lower:字符串转换成小 ...

  7. 图片的HTML

    Code <center> <img style="border-radius: 0.3125em; box-shadow: 0 2px 4px 0 rgba(34,36, ...

  8. c语言利用读取命令行(多行读取)

    #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { FILE *fh = po ...

  9. Keras 获取中间某一层输出

    1.使用函数模型API,新建一个model,将输入和输出定义为原来的model的输入和想要的那一层的输出,然后重新进行predict. #coding=utf-8 import seaborn as ...

  10. nsx-edge虚拟机抓包实践

    Edge抓包 今天在客户端进行故障排除时,我需要在环境中的一个边缘服务网关上执行包捕获.在诊断一系列不同的问题时,执行包捕获通常非常有用. 要启动包捕获,您可以跳到ESG的控制台,或者像我在本例中所做 ...