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

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

运行结果如下:

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作

相关推荐
SilentSamsara2 分钟前
爬虫工程化:Playwright + 反反爬 + 数据清洗管道实战
开发语言·爬虫·python·青少年编程·playwright
STDD2 分钟前
Node-RED 自托管部署指南:打造可视化 IoT 自动化平台
运维·物联网·自动化
AI玫瑰助手5 分钟前
Python函数:函数的返回值(return)与多值返回
开发语言·python·信息可视化
花果山~~程序猿7 分钟前
快速认识python项目的虚拟环境
开发语言·python
basketball61614 分钟前
Go语言从入门到进阶:8. 接口
开发语言·后端·golang
gCode Teacher 格码致知16 分钟前
Python教学:字符编码的四种环境-由Deepseek产生
开发语言·python
铁链鞭策大师19 分钟前
JavaEE之多线程
java·开发语言·java-ee
我是唐青枫23 分钟前
Java Optional 实战指南:优雅处理空值与链式转换
java·开发语言
小江的记录本32 分钟前
【JVM虚拟机】类加载机制:类加载器、双亲委派模型、好处、破坏双亲委派的场景(附《思维导图》+《面试高频考点清单》)
java·jvm·spring boot·后端·python·spring·面试
basketball61634 分钟前
设计模式入门:2. 工厂模式详解 C++实现
开发语言·c++·设计模式