Python自动化实战之接口请求的实现
作者:渴望力量的哈士奇 发布时间:2021-01-15 15:44:58
在前文说过,如果想要更好的做接口测试,我们要利用自己的代码基础与代码优势,所以该章节不会再介绍商业化的、通用的接口测试工具,重点介绍如何通过 python 编码来实现我们的接口测试以及通过 Pycharm 的实际应用编写一个简单接口测试。
使用 Python 发送 请求
应为从最开始写这个 Python全栈系列 一直使用的就是 python3.x (这里我使用的是 python 3.8 版本) ,实际上 python 3 本身自带的就有能够实现发送请求的模块:
http.client
urllib.request
Python 发送请求的方式
以上两个都可以实现发送 http 请求,也就是说它们都可以帮助我们完成接口测试。不过相对于来说它们更偏向于底层,需要更多的定义,所以在使用上面比较的麻烦;
在实际的工作中,使用的更多的反而是第三方库 resuests ,为什么会选择使用 resuests ?那是因为它是经过二次集成、二次封装的,它能够让我们发送请求变得更简单,支持编码、解码、会话保持、长链接、可以加载 Header等等等等。
这也是我们使用 Python 做接口测试的一个首选方式,接下来就学习一下如何安装并使用 requests 库 吧。
requests 库的配置
安装 Requests 库 其实也非常的简单,直接在 terminal 终端 执行 pip install requests , 见下图:
也可以通过设置中心去安装,在 Windows 系统,选择的是 File --> Settings... ,Mac 系统选择的是 PyCharm --> Preferences... 如下图:
如果安装失败,或者安装超时,可以换一个国内的源地址,或者考虑一下 ke xue shang wang 吧。
天行数据 - 空气质量接口
从天行数据网站可以找到公开的 空气质量接口,通过该接口,可以免费查询全国各地城市的空气质量。
API详情如下:
接口地址:http://web.juhe.cn/environment/air/cityair
**返回格式:**json
**请求方式:**get
请求示例:http://web.juhe.cn/environment/air/cityair?city=城市名称&key=您申请的APPKEY值
请求参数说明:
参数 | 是否必填项 | 类型 | 说明 |
---|---|---|---|
city | yes | string | 城市名称的中文名称或拼音,如:上海 或 shanghai |
key | yes | string | APP key (注册之后申请该接口的使用,自动生成一个key) |
返回参数说明:
名称 | 类型 | 说明 |
---|---|---|
citynow | JSONObject | 当前城市的空气质量的最新结果 |
lastTwoWeeks | JSONObject | 最近几周的空气质量数据(4周28天) |
lastMoniData | JSONObject | 各监测点的数据,如果字段返回"—",可能是该监测点未监测这项数据或者有延迟 |
利用 requests 发送查询 空气质量接口 请求
实现发送请求的三步:
1、组装请求 (包含 url 、请求的参数、请求的数据、 headers、cookies等等)
2、发送请求,获取响应
3、解析响应、获取到想要的文本
代码示例如下:
# coding:utf-8
import requests
'''
天行空气质量接口:
get:http://web.juhe.cn/environment/air/cityair?city=城市名称&key=您申请的APPKEY值
'''
url = "http://web.juhe.cn/environment/air/cityair?city=shanghai&key=98a470ea50853d3e698b2dfea09ae079"# 定义url
result = requests.get(url)# 使用 requests 包的 get 方法获取响应结果
print(result.text)# 打印输出 result 的文字解析
运行结果如下:
url 还支持 param 等一些信息,所以我们在组装url的时候,还可以不用像上图中那样直接去定义;可以单独定义一个 param ,以字典的形式写入我们要传入的内容。代码示例如下:
PS:"param" 就是 get 请求方法的 "url" 问号后面的内容,示例:"http://web.juhe.cn/environment/air/cityair?city=城市名称&key=您申请的APPKEY值"
# coding:utf-8
import requests
'''
天行空气质量接口:
get:http://web.juhe.cn/environment/air/cityair?city=城市名称&key=您申请的APPKEY值
'''
# url = "http://web.juhe.cn/environment/air/cityair?city=shanghai&key=98a470ea50853d3e698b2dfea09ae079"
url = "http://web.juhe.cn/environment/air/cityair"# 定义url
param = {"key": "98a470ea50853d3e698b2dfea09ae079", "city": "shanghai"}# 定义param
result = requests.get(url=url, params=param)# 使用 requests 包的 get 方法获取响应结果
print(result.text)# 打印输出 result 的文字解析
运行结果如下:
接下来再尝试一下通过 psot 方法,运行的结果会怎么样。
代码示例如下:
# coding:utf-8
import requests
'''
天行空气质量接口:
get:http://web.juhe.cn/environment/air/cityair?city=城市名称&key=您申请的APPKEY值
'''
# url = "http://web.juhe.cn/environment/air/cityair?city=shanghai&key=98a470ea50853d3e698b2dfea09ae079"
url = "http://web.juhe.cn/environment/air/cityair"# 定义url
# param = {"key": "98a470ea50853d3e698b2dfea09ae079", "city": "shanghai"}# "param" 就是 get 请求方法的 "url" 问号后面的内容
data = {"key": "98a470ea50853d3e698b2dfea09ae079", "city": "shanghai"}# data 的内容才是 post 方法里需要传入的参数
# result = requests.get(url=url, params=param)
result = requests.post(url=url, data=data)# 使用 requests 包的 post 方法获取响应结果
print(result.text)# 打印输出 result 的文字解析
运行结果如下:
这里会发现结果与 get 方法是一致的,其实想要测试个简单的接口其实一点都不复杂… 对不对? 再接下来就准备开始一套完整的测试自动化测试的实现吧
来源:https://blog.csdn.net/weixin_42250835/article/details/125047279


猜你喜欢
- MySQL root密码正确,却怎么也无法从本地登录MySQL,提示ERROR 1045 (28000): Access denied fo
- 关于Python数据分析中pandas模块在输出的时候,每行的中间会有省略号出现,和行与行中间的省略号....问题,其他的站点(百度)中的大
- 上回 说到“大屏幕浏览页面的良好体验,本就应该用户自己调整窗口。”根据屏幕不同大小,缩小窗口出横向滚动条在所难免,但理想情况下,页面应该能适
- 脚本需求:每天备份mysql数据库,保留7天的脚本。存放在/opt/dbbak目录中。脚本名称为database_xxxx-xx-xx.sq
- 一、安装相关的模块首先第一步的话我们需要安装相关的模块,通过pip命令来安装pip install gif另外由于gif模块之后会被当做是装
- step 1:perpar database & datause mastergoCreate database Inventory
- python中zip函数返回一个以元组为元素的列表,其中第 i 个元组包含每个参数序列的第 i 个元素。返回的列表长度被截断为最短的参数序列
- 引言除非您正在对服务进行原型设计,否则您可能会关心应用程序的内存使用情况。内存占用更小,基础设施成本降低,扩展变得更容易/延迟。尽管 Go
- 微信小程序官方给了十分详细的登陆时序图,当然为了安全着想,应该加上签名加密。微信小程序端1).调用wx.login获取 code 。 2).
- 傅里叶变换是在高数是一个很重要的知识点,今天将结合Python代码实现傅立叶变换。傅立叶变换我们平时是如何去分解一个复杂的问题呢?一个经典的
- 代码如下:--CAST 和 CONVERT 函数 Percentage DECLARE @dec decimal(5,3), @var va
- pytorch默认使用单精度float32训练模型,原因在于:使用float16训练模型,模型效果会有损失,而使用double(float6
- 如果用的是Apache服务器,还可以通过配置来禁止该目录下的PHP文件的访问,有两种方式: 方式一:.htaccess控制,适用于没有服务器
- mysql limit 分页的用法及注意事项:在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,my
- Django提供了一个新的类来帮助你管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表、元组或其它可
- 本文实例为大家分享了javascript实现双端队列的具体代码,供大家参考,具体内容如下1.双端队列双端队列是一种允许我们同时从前端和后端添
- 目录前言通过错误日志记录利用 channel 传输使用 sync/errgroup总结前言在 Go 语言程序开发中,goroutine 的使
- 本文的换肤方案灵感来自于 element-ui需求:网站换肤,主题切换。网站的主题色可以在几种常用颜色之间进行切换,还有相关图片、图标也要跟
- 学习爬虫有一段时间了,今天使用Scrapy框架将校花网的图片爬取到本地。Scrapy爬虫框架相对于使用requests库进行网页的爬取,拥有
- 前言注释可以起到一个备注的作用,团队合作的时候,个人编写的代码经常会被多人调用,为了让别人能更容易理解代码的通途,使用注释是非常有效的。Py