基于Python的接口自动化-Requests模块

目录

引言

一、模块说明

二、Requests模块快速入门

1     发送简单的请求

2    发送带参数的请求

3    定制header头和cookie

4    响应内容

5    发送post请求

6    超时和代理

三、Requests实际应用


引言

        在使用Python进行接口自动化测试时,实现接口请求构建主要是使用Requests模块。Requests库是python的第三方模块,requests模块在python内置模块的基础上进行了高度的封装,从而使得python进行网络请求时,变得更加简洁和人性化,以下介绍python Requests模块的主要操作和应用。

一、模块说明

Requests模块是第三方模块,需要预先安装,requests模块在python内置模块的基础上进行了高度的封装,从而使得python进行网络请求时,变得更加简洁和人性化。它几乎完全用python编写,比urllib2模块更易方便构建请求。Requests模块支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码等功能特性。具体的功能特性介绍,可以学习requests中文文档,requests模块同时支持python2和python3相关的版本。中文在线文档总结的模块特性:

 

安装requests模块:

要安装 Requests,打开cmd,直接pip安装,或pycharm中搜索requests 安装即可

1.Pip安装:pip install requests

2.Pycharm 中搜索 requests 安装

 

二、Requests模块快速入门

开始导入requests模块,然后即可使用该模块下所有高度封装的方法或者类。

 

1     发送简单的请求

使用requests发送网络请求,如访问百度,我们只需按如下方式发送请求即可。

可以这样:

r = requests.get("https://www.baidu.com/")

也可以这样:

url = 'https://www.baidu.com/'
r = requests.get(url=url)

其他的请求方式大体都是这样:

 

2    发送带参数的请求

我们在构建url发送请求时往往会传递一些数据,这些数据往往会以键/值对的接在url中,接在一个问号后面,编辑如下代码如请求百度服务器地址,查询:requests,那这个请求的url就像这样:

import requests
url = 'https://www.baidu.com/'
data = {'wd':'requests'}
r = requests.get(url=url,params=data)
print(r.url)

打印出请求的url,r.url是获取发送请求的url:
https://www.baidu.com/?wd=requests

一般发送get请求是将需要传递的参数传递到params中即可,上面实例params传递的是字典类型数据,当然也可以将一个列表作为值传入:

payload {'key1''value1''key2': ['value2''value3']}
requests.get('http://httpbin.org/get', params=payload)
print(r.url)

输出url:

http://httpbin.org/get?key1=value1&key2=value2&key2=value3

3    定制header头和cookie

在发送请求时,往往需要为请求添加http请求头,requests库也可以简单构建传递请求头,只要一个dict传递给请求的headers参数即可:

headers = {
            "Accept": "application/json, text/plain, */*",
            "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
        }
r = requests.get(url=url,params=data,headers=headers)

有时有些请求需要携带cookie信息,在发送请求时也只要传递给请求的cookie参数即可:

 

4    响应内容

使用requests方法后,会返回一个response对象,其存储了服务器响应的内容。在发送请求后,有时我们需要获取发送请求的目标服务的返回信息,如返回状态码、返回数据体等,以及以什么样的解码方式返回数据。如下是response对象封装的方法:

 

5    发送post请求

HTTP 协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式,服务端通过是根据请求头中的Content-Type字段来获知请求中的消息主体是用何种方式进行编码,再对消息主体进行解析。一般常用的提交数据方式包括:

1)以form表单提交数据

请求头中的Content-Type值为:application/x-www-form-urlencoded,Reqeusts支持以form表单形式发送post请求,只需要将请求的参数构造成一个字典,然后传给requests.post()的data参数即可。

实例:

 

2)以json形式发送post请求

请求头中的Content-Type值为:application/json,Reqeusts支持以json串形式发送post请求,只需要将一个python字典类型的数据转换成json格式,然后传给requests.post()的data参数即可。

实例:

 

3)以multipart/form-data形式上传文件

经常用到的是上传文件用的表单,请求头中的Content-Type值为:multipart/form-data,Requests支持以multipart形式发送post请求,只需将一文件传给requests.post()的files参数即可。

实例:

 

6    超时和代理

Requests也支持方便构建请求超时和代理设置,只需分别将请求数据传递给timeout和proxies即可,代码实例:

 

三、Requests实际应用

1. 网页数据爬虫,Requests能方便的构建和发送基于HTTP协议的网络请求,因此可以基于Requests来编写爬虫脚本,爬取互联网上目标网站的网页,提取网页源代码中的图片、文本、视频等数据,并可以将爬取的海量大数据应用于数据分析

2. 在软件测试项目中,可以用来构建接口测试,完成不同接口测试脚本和执行。


最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

在我的QQ技术交流群里(技术交流和资源共享,广告勿扰)

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值