python requests库 response_python利用requests库进行接口测试的方法详解

前言

之前介绍了接口测试中需要关注得测试点,现在我们来看看如何进行接口测试,现在接口测试工具有很多种,例如:postman,soapui,jemter等等,对于简单接口而言,或者我们只想调试一下,使用工具是非常便捷而且快速得,但是对于更复杂得场景,这些工具虽然也能实现,但是难度要比写代码更大,而且定制化受到工具得功能影响,会遇到一些障碍,当然我们还要实现自动化等等,鉴于以上因素,我们还是要学会使用代码进行接口测试,便于维护与扩展,或者算是我们知识得补充把~

requests库是python用来发起http/https请求得第三方库,支持get,post,put,delete等,requests特点是简单便捷、功能丰富,能够满足日常测试需求,所以我们选取requests库进行接口测试。

第一部分:基础部分

以一个简单的get接口为例​

import

requests

import

json

import

io

import

syssys.stdout =

io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8') #解决Python3无法输出中文的问题第三部分:进阶部分

url="https://api.douban.com/v2/book/search"

params={ "q":"python", "start":"0", "count":"10" }

response=requests.get(url,params=params)

1.响应信息(response)解析

#print(response.text)

print(response.content)

##下面是输出信息,太长了,此处仅显示前面部分,后面省略。下同。

b'{"count":10,"start":0,"total":1701,"books":[{

response.text是以str的形式返回的响应信息

response.content是以bytes形式返回

2.获取状态码​​​​

print('返回响应状态码:',response.status_code)

##输出

返回响应状态码: 200​​

3.获取headers信息

print('获取headers信息:',response.headers)​

##输出

获取headers信息: {'Date': 'Sun, 02 Sep 2018 02:32:39 GMT',

'Content-Type': 'application/json;

4.获取cookies信息​​

print('获取cookies信息:',response.cookies)

##输出

获取cookies信息: ]>

注意:这里与其他部分稍有不同,返回cookies的信息为cookies对象,而不是像前面部分返回得是字符串或者字典,cookies解析部分在后面会进行单独说明​​

5.获取请求url

print('获取请求url:',response.url)​

##输出

获取请求url:

https://api.douban.com/v2/book/search?q=python&start=0&count=10

6.获取反序列化后的得信息:​

​res=response.json()

print('获取反序列化后的信息:',res)

##输出

获取反序列化后的信息: {'count': 10, 'start': 0, 'total': 1701,

'books': [{​​

注意:只有在返回信息为json格式时才能使用,否则会报json异常

7.获取响应时间

print(response.elapsed)

print(response.elapsed.microseconds)

print(response.elapsed.seconds)

print(response.elapsed.total_seconds())

##输出

0:00:00.413287

413287

0

0.4132

第二部分:进阶部分

通常我们要想获取正确得响应信息需要传递一些参数,针对不同得请求,传参方式稍有不通,下面我们来看一下这里get接口和一个post接口。

1.get请求传递参数

url="https://api.douban.com/v2/book/search"

params={ "q":"python", "start":"0", "count":"10" }

response=requests.get(url,params=params)

说明:先定义一个参数字典,然后将参数字典以params参数传递给get方法

2.post请求传递参数(这部分暂未有实例,先转载他人的代码)

post传递参数和get有所不同,根据服务端取值方式进行不同方式的传递

如果是传递的json格式的参数

p={"name":"john","age":17}

response=requests.post("http://localhost:5000/post_params",json=p)

print(response.text)

###输出:

{"name":

"john", "age":

17}

如果是以html中form的形式传递参数

response=requests.post("http://localhost:5000/post_params",data=p)

print(response.text)

如果是form传递的是json格式需要以下面的方式

response=requests.post("http://localhost:5000/post_params",data=json.dumps(p))

print(response.text)

说明:需要将字典形式的参数转换为json格式,再进行传递

根据服务端的情况选中一种方式进行传递参数,通常情况下这三种情况可以满足测试需求

第三部分:高级部分

1.操作cookies

有时候由于服务端需要取得cookies信息来进行用户身份验证,

或者另外一些用户信息来进行逻辑处理,这时候我们在测试接口时需要手动获取cookies信息和添加cookies信息到请求中​。

这里我定义一个登陆函数Login(),获取cookie,将cookie对象转换为字典形式的,然后返回备用。

response=requests.post(url=url,data=data)

#将cookies转换成字典dict形式的

cookies=requests.utils.dict_from_cookiejar(response.cookies)

#返回cookies给其他接口使用 return

cookies

然后再下个接口中,直接调用该函数所返回的cookies

#cookies直接调用login函数中的cookies值

res=requests.get(url=url,params=params,cookies=Login())

转载自https://www.jb51.net/article/143333.htm​​,代码部分有做修改

​​​​

​​

​​

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值