irpas技术客

〖Python接口自动化测试实战篇⑧〗- 小案例 - 使用python实现接口请求 [查询天行数据]_不渴望力量的哈士奇

大大的周 3230

点击下方图片有惊喜,精美礼品等你来拿哦


前言: ? 作者简介:渴望力量的哈士奇 ?,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS 赋能的博主 ? 🏆 CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主 🏆 📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬 🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦


专栏系列(点击解锁)学习路线指引知识定位 🔥Python全栈白皮书🔥 零基础入门篇 以浅显易懂的方式轻松入门,让你彻底爱上Python的魅力。 语法进阶篇 主要围绕多线程编程、正则表达式学习、含贴近实战的项目练习 。 自动化办公篇 实现日常办公软件的自动化操作,节省时间、提高办公效率。 自动化测试实战篇 从实战的角度出发,先人一步,快速转型测试开发工程师。 数据库开发实战篇 更新中 爬虫入门与实战 更新中 数据分析篇 更新中 前端入门+flask 全栈篇 更新中 django+vue全栈篇 更新中 拓展-人工智能入门 更新中 网络安全之路 踩坑篇 记录学习及演练过程中遇到的坑,便于后来居上者 网安知识扫盲篇 三天打鱼,不深入了解原理,只会让你成为脚本小子。 vulhub靶场漏洞复现 让漏洞复现变得简单,让安全研究者更加专注于漏洞原理本身。 shell编程篇 不涉及linux基础,最终案例会偏向于安全加固方向。 [待完结] WEB漏洞攻防篇 2021年9月3日停止更新,转战先知社区等安全社区及小密圈 渗透工具使用集锦 2021年9月3日停止更新,转战先知社区等安全社区及小密圈 点点点工程师 测试神器 - Charles 软件测试数据包抓包分析神器 测试神器 - Fiddler 一文学会 fiddle ,学不会倒立吃翔,稀得! 测试神器 - Jmeter 不仅是性能测试神器,更可用于搭建轻量级接口自动化测试框架。 RobotFrameWork Python实现的自动化测试利器,该篇章仅介绍UI自动化部分。 Java实现UI自动化 文档写于2016年,Java实现的UI自动化,仍有借鉴意义。 MonkeyRunner 该工具目前的应用场景已不多,文档已删,为了排版好看才留着。


文章目录 🐳 使用 Python 发送 请求🐬 Python 发送请求的方式🐬 requests 库的配置🐬 天行数据 - 空气质量接口🐬 利用 requests 发送查询 空气质量接口 请求

在前文说过,如果想要更好的做接口测试,我们要利用自己的代码基础与代码优势,所以该章节不会再介绍商业化的、通用的接口测试工具,重点介绍如何通过 python 编码来实现我们的接口测试以及通过 Pycharm 的实际应用编写一个简单接口测试。

🐳 使用 Python 发送 请求

应为从最开始写这个 Python全栈系列 一直使用的就是 python3.x (这里我使用的是 python 3.8 版本) ,实际上 python 3 本身自带的就有能够实现发送请求的模块:

http.clienturllib.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值


请求参数说明:

参数是否必填项类型说明cityyesstring城市名称的中文名称或拼音,如:上海 或 shanghaikeyyesstringAPP key (注册之后申请该接口的使用,自动生成一个key)


返回参数说明:

名称类型说明citynowJSONObject当前城市的空气质量的最新结果lastTwoWeeksJSONObject最近几周的空气质量数据(4周28天)lastMoniDataJSONObject各监测点的数据,如果字段返回"—",可能是该监测点未监测这项数据或者有延迟

🐬 利用 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 方法是一致的,其实想要测试个简单的接口其实一点都不复杂… 对不对? 😋 再接下来就准备开始一套完整的测试自动化测试的实现吧 😝




1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #小案例 #使用python实现接口请求 #查询天行数据 #Python