requests做接口测试

简介: requests做接口测试

Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。Requests 的哲学是以 PEP 20 的习语为中心开发的,所以它比 urllib 更加 Pythoner。

 

一、安装

使pip安装:

pip install requests


640.jpg

安装完后,运行一个简单的例子查看是否安装成功:

1. import requests                                 #导入requests包
2. r=requests.get(url=‘https://www.baidu.com/‘)
3. print(r.status_code)                            #查看请求返回的状态
4. #结果
5. 200


二、几种请求类型

  ①get请求:requests.get(‘url‘)

  ②post请求:requests.post("url/post")

  ③put请求:requests.put("url/put")

  ④delete请求:requests.delete("url/delete")

  ⑤head请求:requests.head("url/get")

  ⑥options请求:requests.options("url/get")

 

三、get请求

传递url参数

在get请求中,允许使用params关键字,以一个字典来传递这些参数,例如:

1. content={‘pageIndex‘:1,‘pageSize‘:10,‘categoryId‘:9}
2. r=requests.get(‘http://www.xxxxx.com/api/v2/activities‘,params=content)
3. print (r.url)                       #获取请求内容
4. print (r.text)                      #获取响应内容
5. #结果
6. http://www.xxxx.com/api/v2/activities?pageIndex=1&pageSize=10&categoryId=9
7. {"data":[],"pageIndex":1,"totalNum":0,"hasMore":false,"pageSize":0}

 

如果字典中存在None的值,是不会添加到url请求中的

1. content={‘pageIndex‘:1,‘pageSize‘:10,‘categoryId‘:None}
2. r=requests.get(‘http://www.xxxxx.com/api/v2/activities‘,params=content)
3. print (r.url)
4. 
5. #结果
6. http://www.xxxx.com/api/v2/activities?pageIndex=1&pageSize=10


 

ps:不使用params的话,也可在请求中输入全部的地址,效果相同,如:

r=requests.get(‘http://m.xxxxx.com/api/v2/activities?pageIndex=1&pageSize=10&categoryId=9‘)

 

注意:在某些get请求中,需要辨别用户身份,因此会需要在请求中发送cookie内容,如某些需要用户登录才能访问的页面,在接下来的文章中会进行讲解

 

四、post请求

1.以表单形式传递参数:

想要发送一些表单形式的数据,只需简单的传递一个字典给data关键字,在发送请求的时候,会自动编码为表单的形式,例如:

1. content={‘key1‘:‘value1‘,‘key2‘:‘value2‘}
2. r=requests.post(‘http://www.xxx/api/v1/user/login‘,data=content)

 

2.以json形式传递参数:

在很多情况下,想要发送的数据并非为表单形式,而是一个json格式的字符串,如果传递给data关键字的内容不是一个dict,而是

一个string,那么在发送的时候,数据会被直接发送出去,不会自动编码为表单形式

为了将一个数据结构转换为json格式的字符串,首先得需要导入一个json包,两种常用的方法为:json.dumps()json.loads()

 

1. import json
2. content={‘name‘:‘Nee‘,‘age‘:‘18‘}
3. str_content=json.dumps(content)      #把dick编码为json格式的字符串
4. print (str_content)
5. print (type(str_content))
6. #结果:
7. {"name": "Nee", "age": "18"}
8. <class ‘str‘>                       
9. #此时的类型为str
10. #把json格式的字符串解码为原先的数据结构
11. content=json.loads(str_content) 
12. print (content)
13. print (type(content))
14. #结果
15. {‘name‘: ‘Nee‘, ‘age‘: ‘18‘}
16. <class ‘dict‘>
17.

 

注意:1.json编码支持的基本类型有:None, bool, int, float, string, list, tuple, dict。对于字典,json会假设key是字符串(字典中的任何非字符串key都会在编            码时转换为字符串),要符合JSON规范,应该只对python列表和字典进行编码。此外,在WEB应用中,把最顶层对象定义为字典是一种标准做法。                    2.json编码的格式几乎和python语法一致,略有不同的是:True会被映射为true,False会被映射为false,None会被映射为null,元组()会被映射为列表[],如:

1. content={‘a‘:None,‘b‘:True,‘c‘:False,‘d‘:(1,2)}
2. str_content=json.dumps(content)
3. print (str_content)
4. 
5. #结果:
6. {"a": null, "b": true, "c": false, "d": [1, 2]}

 

想要在post请求中使用data关键字来传递json格式的字符窜,首先得把dict转为string,例如:

1. import requests
2. import json
3. url=‘http://www.xxx.com/api/v1/user/login‘
4. data={"un":"xxxxx","pw":"xxxxxx","ct":12}
5. r=requests.post(url,data=json.dumps(data))         #在一些post请求中,还需要用到headers部分,此处未加,在下文中会说到   
6. print (r.text)
7. 
8. #结果
9. {"newUser":false,"user":{"userId":531,"mobileNo":"13700002000","userName":"测试用户2000".......}

除了可以对dick编码后以string的方式传递参数外,还可以直接使用json关键字直接传递,在传递时会自行进行编码为string类型

1. import requests            #不需要导入json模块
2. url=‘http://xxxx/api/v1/user/login‘
3. data={"un":"xxxxxxx","pw":"xxxxx","ct":12}
4. r=requests.post(url,json=data)

 

在post请求中用到的head部分和cookie部分。在之后的文章中会进行讲解

 

五、响应

1.响应状态

在请求发送成功后,可以用status_code来查看相应状态

1. import requests
2. r=requests.get(url)
3. print(r.status_code)
4. 
5. -----结果-----
6. 200

下面是常见的HTTP状态码:

200 - 请求成功

301 - 资源(网页等)被永久转移到其它URL

404 - 请求的资源(网页等)不存在

500 - 内部服务器错误

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:

HTTP状态码分类

分类 分类描述
1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误,请求包含语法错误或无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生了错误


2.响应内容

在上面的内容中,已经展示了用text来获取相应的内容,返回的内容为string

1. import requests
2. r=requests.get(url)
3. print (r.text)
4. print (type(r.text))       #查看返回内容的类型
5. 
6. -----结果-----
7. ..........                 #返回的具体内容
8. <class ‘str‘>              #类型为string

 

除此之外,requests中也带有带有一个内置的json解码器,将返回的内容转换为dict

1. import requests
2. r.requests.get(url)
3. print (r.json())
4. print (type(r.json()))
5. 
6. -----结果-----
7. ......
8. <class ‘dict‘>

那么通过json解码器转为dict后,想要查看到返回内容中某个具体参数的值,就比较方便啦!

 

3.响应内容编码格式

在获取响应内容的时候,可以使用r.encoding来查看相应内容的编码格式

1. import requests
2. r=requests.get(url)
3. print(r.encoding)
4. 
5. -----结果-----
6. UTF-8

 

也可以进行指定编码,当改变了编码方式是后,每次获取响应内容,都会使用新的编码方式(建议在所有情况下都使用utf-8,如果你对编码一点都不了解,那使用utf-8就对了!

1. import requests
2. r=requests.get(url)
3. r.encoding=‘ISO-8859-1‘
4. print(r.text)

 

4.响应头内容

1. import requests
2. r=requests.get(url)
3. print (r.headers)

 

5.cookies

1. import requests
2. r=requests.get(url)
3. print (r.cookies)
4.
相关文章
|
4月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
750 23
|
9月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
6月前
|
SQL 安全 测试技术
2025接口测试全攻略:高并发、安全防护与六大工具实战指南
本文探讨高并发稳定性验证、安全防护实战及六大工具(Postman、RunnerGo、Apipost、JMeter、SoapUI、Fiddler)选型指南,助力构建未来接口测试体系。接口测试旨在验证数据传输、参数合法性、错误处理能力及性能安全性,其重要性体现在早期发现问题、保障系统稳定和支撑持续集成。常用方法包括功能、性能、安全性及兼容性测试,典型场景涵盖前后端分离开发、第三方服务集成与数据一致性检查。选择合适的工具需综合考虑需求与团队协作等因素。
716 24
|
6月前
|
SQL 测试技术
除了postman还有什么接口测试工具
最好还是使用国内的接口测试软件,其实国内替换postman的软件有很多,这里我推荐使用yunedit-post这款接口测试工具来代替postman,因为它除了接口测试功能外,在动态参数的支持、后置处理执行sql语句等支持方面做得比较好。而且还有接口分享功能,可以生成接口文档给团队在线浏览。
241 2
|
8月前
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
349 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
|
8月前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
342 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
7月前
|
存储 JSON API
Python测试淘宝店铺所有商品接口的详细指南
本文详细介绍如何使用Python测试淘宝店铺商品接口,涵盖环境搭建、API接入、签名生成、请求发送、数据解析与存储、异常处理等步骤。通过具体代码示例,帮助开发者轻松获取和分析淘宝店铺商品数据,适用于电商运营、市场分析等场景。遵守法规、注意调用频率限制及数据安全,确保应用的稳定性和合法性。
|
7月前
|
监控 API 开发工具
Socket.IO介绍,以及怎么连接测试Socket.IO接口?
Socket.IO 是一个用于浏览器和服务器间实时双向通信的库,支持低延迟消息传递、跨平台运行及自动重连。文章介绍了其特点与调试需求,并详细说明如何使用 Apifox 工具创建、连接、发送/接收 Socket.IO 事件,以及团队协作和调试技巧。掌握这些技能可提升实时应用开发效率与质量。
|
8月前
|
小程序 测试技术 数据安全/隐私保护
微信公众号接口测试实战指南
微信公众号接口测试是确保系统稳定性和功能完整性的重要环节。本文详细介绍了测试全流程,包括准备、工具选择(如Postman、JMeter)、用例设计与执行,以及常见问题的解决方法。通过全面测试,可以提前发现潜在问题,优化用户体验,确保公众号上线后稳定运行。内容涵盖基础接口、高级接口、微信支付和数据统计接口的测试,强调了功能验证、性能优化、安全保护及用户体验的重要性。未来,随着微信生态的发展,接口测试将面临更多挑战和机遇,如小程序融合、AI应用和国际化拓展。
|
9月前
|
存储 测试技术 数据库
接口测试工具攻略:轻松掌握测试技巧
在互联网快速发展的今天,软件系统的复杂性不断增加,接口测试工具成为确保系统稳定性的关键。它如同“翻译官”,模拟请求、解析响应、验证结果、测试性能并支持自动化测试,确保不同系统间信息传递的准确性和完整性。通过Apifox等工具,设计和执行测试用例更加便捷高效。接口测试是保障系统稳定运行的第一道防线。

热门文章

最新文章