Python接口测试之Requests(七)

本文介绍了Python中用于接口测试的Requests库,详细讲解了如何安装、使用GET、PUT、POST、DELETE等方法进行HTTP请求,并展示了参数设置、响应内容获取、HTTP状态码检查及JSON数据处理。同时,文章还探讨了请求头headers的作用及其在HTTP请求中的地位。
摘要由CSDN通过智能技术生成

Python接口测试之Requests(七)

 

在python的标准库中,虽然提供了urllib,utllib2,httplib,但是做接口测试,requests真心好,正如官方说的,“让HTTP服务人类”,一言以蔽之,说明一切,关于它的方法论这里不是讨论的重点,重点是我们要开始学习它。

安装request库的方式非常简单,安装命令为:

pip install requests

这样就会自动下载并且按照成功,进入到python的命令行模式下,如果可以导入request,说明requests库已经安装好,见如下的截图:

Python接口测试之Requests(七)

 

在HTTP的请求中,我们知道,最常使用的分别有GET,PUT,DELETE,POST,通过request库也是可以实现的,见如下的代码:

Python接口测试之Requests(七)

 

#!/usr/bin/env python

#coding:utf-8

import requests

requests.get('https://github.com/timeline.json')

requests.put('http://httpbin.org/put')

requests.post('http://httpbin.org/post')

requests.delete('http://httpbin/ddelete')

事实上,每一个请求对应的参数是不同的,在这里我们有必要对每个请求的参数来了解并学习,先来看GET请求的参数,见源码部分:

Python接口测试之Requests(七)

 

GET请求中,第一个参数是url,第二个请求是params,第三个参数是字典,比如我们实现在百度阅读搜索无涯编写的《selenium-python自动化测试》,实现这样的一个过程请求的 url为:

http://yuedu.baidu.com/ebook/3c0077aaa32d7375a41780bb?_searchquery=selenium-python%D7%D4%B6%AF%BB%AF%B2%E2%CA%D4

那么通过代码实现的方式为:

Python接口测试之Requests(七)

 

#!/usr/bin/env python

#coding:utf-8

import requests

r=requests.get(url='http://yuedu.baidu.com/ebook/3c0077aaa32d7375a41780bb',params={'_searchquery':'selenium-python%D7%D4%B6%AF%BB%AF%B2%E2%CA%D4'})

print r.url

我们看请求的URL,见执行后的截图:

Python接口测试之Requests(七)

 

在GET请求中,我们把params的参数成为URL参数,也就是在URL中传递参数,事实上,在每一个GET的请求过程中,得看具体的请求过程。接下来我们来看POST请求的参数,见该部分的源码截图:

Python接口测试之Requests(七)

 

我们可以看到,在POST请求中,参数是URL,data,json以及字典,data其实就是以表单形式的数据,或者说我们只需要把一个字典给data作为参数来传递,来看这样的一个请求,请求的URL为:http://m.cyw.com/index.php?m=api&c=cookie&a=setcity,参数是城市的ID,然后返回这个城市,来看这样的一个POST请求,见实现的代码:

Python接口测试之Requests(七)

 

#!/usr/bin/env python

#coding:utf-8

import requests

r=requests.post(url='http://m.cyw.com/index.phpm=api&c=cookie&a=setcity',data={'cityId':438})print r.json()

见返回的json数据,见截图:

Python接口测试之Requests(七)

 

事实上,在一个post请求中,这是一个简单的请求,在工作的时候,很多时候是登录成功后,返回一个token,然后后面的每一个请求都带这个参数token去请求,也就是说,在接口自动化测试中,首先要做的就是登录获取token这个参数,下来后面的请求把获取的这个参数token带上去请求或者操作系统的其他业务,下面来看实现这样的一个过程代码,实现的思路把登录写成一个方法,然后把token返回,再做下一个请求的时候,把token当作参数来传递,具体实现见如下的代码:

Python接口测试之Requests(七)

 

注释:如上的代码部分被红色的掩盖,希望理解,再如上的代码中,我们可以看到,登录成功后,返回了token,然后在执行其他接口的时候,直接把返回的token当作是参数来处理,但是有一点是必须得注意的,必须先登录,再执行登录后的接口,要不会提示错误的。

使用requests发送一个请求后,我们可以获取这个请求的响应内容,HTTP的状态码,以及URL,我们来看这样的一个过程,比如请求bing,我们获取text,stats_code,url和headers,见实现的代码:

Python接口测试之Requests(七)

 

#!/usr/bin/env python

#coding:utf-8

import requests

r=requests.get('http://www.bing.com')

print u'HTTP状态码:',r.status_code

print u'请求的URL:',r.url

print u'获取Headers:',r.headers

print u'响应内容:',r.text

见该代码执行后的结果:

Python接口测试之Requests(七)

 

在一个POST的请求中,很多时候,我们需要把获取的响应内容,进行反序列化成json字符串内容,来断言该接口是正确的还是错误的,我们不可能对所有获取的响应内容来进行做断言,这样是很不明智的,我们只会截取关键的信息来做断言,见下面一个网站的登录请求,以及获取的响应内容经过反序列化后的内容,见实现的源码:

Python接口测试之Requests(七)

 

事实上,经过反序列化很麻烦的,在requests库中有一个内置的JSON解码器,来帮助我们处理JSON数据,我们重构下刚才的代码,可以精简反序列化的过程,见代码:

Python接口测试之Requests(七)

 

什么是请求头,或者说在一个HTTP的请求中,headers充当了什么角色和它有什么作用,在https://en.wikipedia.org/wiki/Header_(computing)有很详细的解释,感兴趣的同学可以看下,headers分为二部分,一部分是request headers,另外部分是response headers,

见如下的截图:

Python接口测试之Requests(七)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值