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值

请求参数说明:

参数是否必填项类型说明
cityyesstring城市名称的中文名称或拼音,如:上海 或 shanghai
keyyesstringAPP 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 的文字解析

 运行结果如下:

总结:

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

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

软件测试面试文档

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/336784.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uniapp的IOS证书(.p12)和描述文件(.mobileprovision)申请 2024年最新教程

文章目录 准备环境登录 iOS Dev Center 下面我们从头开始学习一下如何申请开发证书、发布证书及相对应的描述文件。首先需要申请苹果 App ID (App的唯一标识)生成证书请求文件申请开发(Development)证书和描述文件申请开发(Development)证书添加调试设备…

0基础开发EtherNet/IP:协议格式,JAVA、C#、C++处理

经过一阵倒腾,把CIP、Ethernet/ip协议搞到手 协议的概念和理论就不提及了,上网随便一搜索EtherNet/IP遍地都是。 直接将协议关键点列举出来吧。 更多协议资料 www.jngbus.com 通讯软件群 30806722 这里讲解的是TCP和UDP协议的格式,EtherN…

Ubuntu 20.04安装yum报错:E: Unable to locate package yum

直接上解决方案! 1、选择自己对应的版本的源地址 注意需要选择跟系统版本一致的:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ 找到Ubuntu点击小问号,进去选择对应的版本,将下面的镜像复制到Linux系统的 /etc/apt/sourc…

Elasticsearch各种高级文档操作3

本文来记录几种Elasticsearch的文档操作 文章目录 初始化文档数据聚合查询文档概述对某个字段取最大值 max 示例对某个字段取最小值 min 示例对某个字段求和 sum 示例对某个字段取平均值 avg 示例对某个字段的值进行去重之后再取总数 示例 State 聚合查询文档概述操作实例 桶聚…

Spring Boot实现统一异常处理的技术解析

引言 在软件开发过程中,异常处理是非常重要的一环。一个好的异常处理机制可以帮助我们更好地定位问题,提高代码的可维护性和稳定性。Spring Boot作为一款轻量级的Java开发框架,提供了一种简单而高效的方式来实现统一异常处理。本文将详细介绍…

【极光系列】springBoot集成elasticsearch

【极光系列】springBoot集成elasticsearch 一.gitee地址 直接下载解压可用 https://gitee.com/shawsongyue/aurora.git 模块:aurora_elasticsearch 二.windows安装elasticsearch tips:注意es客户端版本要与java依赖版本一致,目前使用7.6…

高速CAN总线 A C节点竞争总线时 电压分析(共ABC三个节点)

CAN 收发器放大图 ABC三节点框图如下图&#xff1a; 图① 简化过程同<<高速CAN总线 A节点发送 B节点接收 电压分析>> A C节点同时发送显性电平 如下图: 图② A C 节点同时发送显性电平, 则 4 个三极管全部导通, 假定三极管压降0.5V 则电路简化如下图.(导通分析参…

【Qml-数据模型和视图】

Qml编程指南 VX&#xff1a;hao541022348 ■ 数据模型和视图■ ■ 数据模型和视图 QML使用了与Qt中Model-View类似的结构模型类提供了数据模型可以使QML的简单数据&#xff0c;或者复杂的C数据 QML: ListModel, XmlListModel, VisualItemModelC: QAbstractItemModel, QStringL…

记一次多平台免杀PHP木马的制作过程

注意&#xff1a;本文转载自本作者稀土掘金博客 博客地址&#xff1a; 御坂19008号 的个人主页 - 动态 - 掘金 文章目录 前言声明绕过情况使用方法运行环境绕过点介绍技术原理讲解变量传值覆盖模块代码执行阻断模块InazumaPuzzle程序锁定器PerlinNoise危险函数生成与执行类构造…

chapter1-爬虫那些事

背景 这个事情还要从Google或者百度说起。目前的搜索引擎&#xff0c;一般都拥有自己的一套网页检索算法&#xff0c;方便大家迅速的找到需要的网页。但是&#xff0c;当我们在使用各种搜索引擎的时候&#xff0c;是否思考过这样一个问题&#xff1a;搜索引擎是如何搜索到最新…

Linux问题 apt-get install时 无法解析域名“cn.archive.ubuntu.com”

问题描述: 在安装程序时会出现无法解析域名的错误 解决办法: 1、编辑文件 sudo vim /etc/resolv.conf 2、在最后加上(按键 i 进入编辑模式) nameserver 8.8.8.8 3、保存退出(:wq)

【Vue】使用 Vuex 作为状态管理

【Vue】使用 Vuex 作为状态管理 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式和库。它使用单一状态树&#xff0c;这意味着这个对象包含了全部的应用层级状态&#xff0c;并且以一种相对集中的方式存在。这也意味着&#xff0c;通常单个项目中只有一个 Vuex store。Vue…

IDEA在重启springboot项目时没有自动重新build

IDEA在重启springboot项目时没有自动重新build 问题描述 当项目里面某些依赖或者插件更新了&#xff0c;target的class文件没有找到&#xff0c;导致不是我们需要的效果。 只能手动的清理target文件&#xff0c;麻烦得很 &#xff0c; 单体项目还好说&#xff0c;一次清理就…

Transformer|1.4 CNN遇到的问题与窘境

文章目录 CNN遇到的问题与窘境transformer 的优势 CNN遇到的问题与窘境 判断一个人是否为美人&#xff0c;既要看她各个五官&#xff0c;也要看她各个五官占的比例和协调。 既要照顾好局部信息&#xff0c;也要照顾好全局信息。 局部信息用小的感受野进行感受&#xff0c;而全局…

KKVIEW远程控制软件介绍

KKVIEW是一款全功能远程控制软件&#xff0c;可以随时随地访问家里或公司设备。KKVIEW,连接自由&#xff0c;KKVIEW旨在帮助用户在远程技术支持、远程办公、远程教育等领域便利的开展工作。 [主要功能] 远程桌面 一键远程显示远程桌面&#xff0c;一键开启远程控制&#xff0…

单元测试体系集成

JUnit 是一个基于 Java 语言的单元测试框架&#xff0c;可以用它来编写单元测试用例&#xff0c;用途广泛能被各种工具支持&#xff0c;每个 JUnit 单元测试相对独立&#xff0c;运行方便&#xff0c;结果的展示清晰&#xff1b;也可以把它与持续集成工具 Jenkins 进行集成&…

《WebKit 技术内幕》之五(4): HTML解释器和DOM 模型

4 影子&#xff08;Shadow&#xff09;DOM 影子 DOM 是一个新东西&#xff0c;主要解决了一个文档中可能需要大量交互的多个 DOM 树建立和维护各自的功能边界的问题。 4.1 什么是影子 DOM 当开发这样一个用户界面的控件——这个控件可能由一些 HTML 的标签元素…

Rust - 初识结构体

struct&#xff0c;或者 structure&#xff0c;是一个自定义数据类型&#xff0c;允许命名和包装多个相关的值&#xff0c;从而形成一个有意义的组合。如果你熟悉一门面向对象语言&#xff0c;struct 就像对象中的数据属性。 定义并实例化结构体 结构体和之前介绍过的元组类似…

5 python快速上手

数据类型&#xff08;上&#xff09; 1.整型1.1 定义1.2 独有功能1.3 公共功能1.4 转换1.5 其他1.5.1 长整型1.5.2 地板除 2. 布尔类型2.1 定义2.2 独有功能2.3 公共功能2.4 转换2.5 其他2.5.1 做条件自动转换 3.字符串类型3.1 定义3.2 独有功能&#xff08;18/48&#xff09;练…

Minio文件分片上传实现

资源准备 MacM1Pro 安装Parallels19.1.0请参考 https://blog.csdn.net/qq_41594280/article/details/135420241 MacM1Pro Parallels安装CentOS7.9请参考 https://blog.csdn.net/qq_41594280/article/details/135420461 部署Minio和整合SpringBoot请参考 https://blog.csdn.net/…