Python自动化实战之接口请求的实现


Posted in Python onMay 30, 2022

在前文说过,如果想要更好的做接口测试,我们要利用自己的代码基础与代码优势,所以该章节不会再介绍商业化的、通用的接口测试工具,重点介绍如何通过 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 , 见下图:

Python自动化实战之接口请求的实现

也可以通过设置中心去安装,在 Windows 系统,选择的是 File --> Settings... ,Mac 系统选择的是 PyCharm --> Preferences... 如下图:

Python自动化实战之接口请求的实现

如果安装失败,或者安装超时,可以换一个国内的源地址,或者考虑一下 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)

Python自动化实战之接口请求的实现

返回参数说明:

名称 类型 说明
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 的文字解析

运行结果如下:

Python自动化实战之接口请求的实现

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 的文字解析

运行结果如下:

Python自动化实战之接口请求的实现

接下来再尝试一下通过 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 的文字解析

运行结果如下:

Python自动化实战之接口请求的实现

这里会发现结果与 get 方法是一致的,其实想要测试个简单的接口其实一点都不复杂… 对不对? 再接下来就准备开始一套完整的测试自动化测试的实现吧 

以上就是Python自动化实战之接口请求的实现的详细内容,更多关于Python接口请求的资料请关注三水点靠木其它相关文章!


Tags in this post...

Python 相关文章推荐
python基础教程之对象和类的实际运用
Aug 29 Python
利用QT写一个极简单的图形化Python闹钟程序
Apr 07 Python
PyCharm使用教程之搭建Python开发环境
Jun 07 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
Sep 21 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
May 08 Python
python实现单线程多任务非阻塞TCP服务端
Jun 13 Python
用Python写王者荣耀刷金币脚本
Dec 21 Python
Python生成器定义与简单用法实例分析
Apr 30 Python
python十进制和二进制的转换方法(含浮点数)
Jul 07 Python
Python实现通过解析域名获取ip地址的方法分析
May 17 Python
pandas条件组合筛选和按范围筛选的示例代码
Aug 26 Python
使用python把xmind转换成excel测试用例的实现代码
Oct 12 Python
Python中的 enumerate和zip详情
May 30 #Python
python如何为list实现find方法
May 30 #Python
python实现商品进销存管理系统
May 30 #Python
python如何查找列表中元素的位置
May 30 #Python
Python数组变形的几种实现方法
May 30 #Python
Python Matplotlib绘制动画的代码详解
关于pytest结合csv模块实现csv格式的数据驱动问题
May 30 #Python
You might like
php笔记之:初探PHPcms模块开发介绍
2013/04/26 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
2013/06/29 PHP
php跨域cookie共享使用方法
2014/02/20 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
PHP实现的激活用户注册验证邮箱功能示例
2017/06/06 PHP
详解PHP中的 input属性(隐藏 只读 限制)
2017/08/14 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
javascript 循环调用示例介绍
2013/11/20 Javascript
js获取html页面节点方法(递归方式)
2013/12/13 Javascript
JavaScript实现将UPC转换成ISBN的方法
2015/05/26 Javascript
使用jquery插件qrcode生成二维码
2015/10/22 Javascript
JS去除字符串中空格的方法
2017/02/14 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
2017/02/22 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
2017/08/22 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
2018/07/10 Javascript
vue+express 构建后台管理系统的示例代码
2018/07/19 Javascript
Vue实现验证码功能
2019/12/03 Javascript
JS数组方法join()用法实例分析
2020/01/18 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
浅析Python中signal包的使用
2015/11/13 Python
浅谈Python 中整型对象的存储问题
2016/05/16 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
用python写一个定时提醒程序的实现代码
2019/07/22 Python
详解python中*号的用法
2019/10/21 Python
Python如何定义接口和抽象类
2020/07/28 Python
基于HTML5 Canvas:字符串,路径,背景,图片的详解
2013/05/09 HTML / CSS
仿CSDN Blog返回页面顶部功能实现原理及代码
2013/06/30 HTML / CSS
跑步、骑行和铁人三项的高性能眼镜和服装:ROKA
2018/07/06 全球购物
三年级评语大全
2014/04/23 职场文书
大学生个人先进事迹材料范文
2014/05/03 职场文书
环保建议书500字
2014/05/14 职场文书
青春飞扬演讲稿
2014/09/11 职场文书
班主任开场白
2015/06/01 职场文书
水浒传读书笔记
2015/06/25 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书