热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

前言之前介绍了接口测试中需要关注得测试点,现在我们来看看如何进行接口测试,现在接口测试工具有很多种,例如:postman,

前言

之前介绍了接口测试中需要关注得测试点,现在我们来看看如何进行接口测试,现在接口测试工具有很多种,例如: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​​,代码部分有做修改

​​​​

​​

​​



推荐阅读
author-avatar
雅婷永幸482
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有