python接口自动化(二十四)--unittest断言——中(详解)

1.简介

  上一篇通过简单的案例给小伙伴们介绍了一下unittest断言,这篇我们将通过结合和围绕实际的工作来进行unittest的断言。这里以获取城市天气预报的接口为例,设计了 2 个用例,一个是查询北京的天气,一个是查询

南京为例,你也可以查询别的城市的天气预报。

2.接口文档

1、在实际工作中,开发人员都会给你接口文档方便QA测试,和其他系统的开发人员对接。接口文档如下:

2.1天气预报

2.1.1获取实时天气

请求方式:POST

请求地址:https://www.apiopen.top/weatherApi

Query参数名类型必需描述示例 e.g.
citystring城市名称成都

返回示例:

                                {"code": 200,"msg": "成功!","data": {"yesterday": {"date": "14日星期五","high": "高温 7℃","fx": "无持续风向","low": "低温 4℃","fl": "","type": "阴"},"city": "成都","aqi": "89","forecast": [{"date": "15日星期六","high": "高温 10℃","fengli": "","low": "低温 2℃","fengxiang": "无持续风向","type": "多云"},{"date": "16日星期天","high": "高温 15℃","fengli": "","low": "低温 3℃","fengxiang": "无持续风向","type": "晴"},{"date": "17日星期一","high": "高温 14℃","fengli": "","low": "低温 5℃","fengxiang": "无持续风向","type": "晴"},{"date": "18日星期二","high": "高温 11℃","fengli": "","low": "低温 6℃","fengxiang": "无持续风向","type": "多云"},{"date": "19日星期三","high": "高温 12℃","fengli": "","low": "低温 6℃","fengxiang": "无持续风向","type": "多云"}],"ganmao": "昼夜温差较大,较易发生感冒,请适当增减衣服。体质较弱的朋友请注意防护。","wendu": "9"}
}

2、如果没有你可以自己通过fiddler抓包获取参数和接口URL,以及请求方式 。

3.设计测试用例

1、针对以上接口,设计两个城市接口测试用例

2、运行接口用例结果

3、参考代码

 1 # coding=utf-82 #1.先设置编码,utf-8可支持中英文,如上,一般放在第一行3 4 #2.注释:包括记录创建时间,创建人,项目名称。5 '''6 Created on 2019-4-267 @author: 北京-宏哥8 Project:学习和使用unittest框架编写断言-中篇9 '''
10 #3.导入requests和unittest模块
11 import requests
12 import unittest
13 #4.编写测试用例和断言
14 class TestWeather(unittest.TestCase):
15     '''测试天气预报接口'''       # 此注释将展示到测试报告的测试组类
16     def test_beijin_weather(self):
17         '''查询北京天气预报'''         # 此注释将展示到测试报告的用例标题
18         url = "https://www.apiopen.top/weatherApi"
19 
20         par = {
21                 "city": "北京",  # 城市名
22         }
23         r = requests.post(url, params=par)
24         print(r.text)     # 获取返回的结果
25         result = r.json()['code'] #获取状态码
26         print(result)
27         # 断言
28         self.assertEqual(200, result)
29         self.assertIn('msg', r.text)
30         self.assertTrue('北京'in r.text)
31     def test_nanjin_weather(self):
32         '''查询南京天气预报'''  # 此注释将展示到测试报告的用例标题
33         url = "https://www.apiopen.top/weatherApi"
34         par = {
35             "city": "南京",  # 城市名
36         }
37         r = requests.post(url, params=par)
38         print(r.text)  # 获取返回的结果
39         result = r.json()['code']#获取状态码
40         print(result)
41         # 断言
42         self.assertEqual(200, result)
43         self.assertIn('msg', r.text)
44         self.assertTrue('南京' in r.text)
45 
46 if __name__ == "__main__":
47     unittest.main()

4.小结

1、实际中的接口和这个也差不多,你可以增加没有这个城市的等等测试用例,可根据实际需要增加多个测试用例全面的断言。

2、实际开发或者测试工作中经常用到json数据,那么就会有这样一个需求:在谷歌浏览器中访问URL地址返回的json数据能否按照json格式展现出来。

比如,在谷歌浏览器中访问:http://jsonview.com/example.json

展现效果如下:

这里写图片描述

那么安装了JsonView扩展程序后的展现效果如下:

这里写图片描述

很明显,后者的效果更好。实现步骤如下:

1、下载JsonView扩展程序压缩包

下载地址:https://github.com/gildas-lormeau/JSONView-for-Chrome

点击【Clone or download】——【Download Zip】

2、解压这个压缩包

这里写图片描述

3、打开谷歌浏览器的扩展程序界面

方式一:在谷歌浏览器地址栏中输入:chrome://extensions/

方式二:

4、加载JsonView扩展程序

选中开发者模式,点击【加载正在开发的扩展程序…】,选择插件目录(D:\JSONView-for-Chrome-master\WebContent)

点击确定后,就安装上了。安装后界面如下:

安装完成,重新加载 (Ctrl+R)。

  每天学习一点,今后必成大神-

往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问)或者微信搜索: 北京宏哥  公众号提前解锁更多干货。

Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试

Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南

Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架

Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架

Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[MySQL][数据类型]详细讲解

目录 1.说明1.数据类型分类2.数值类型1.int类型2.bit类型3.浮点数类型1.float2.decimal 3.字符串类型1.char2.varchar3.char和varchar比较 4.日期和时间类型5.enum和set1.基本语法2.查询数据 1.说明 MySQL表中建立属性列,列名称 类型 num tinyint unsigned;与C/C语…

优化Cocos Creator 包体体积

优化Cocos Creator 包体体积 引言一、优化图片文件体积:二、优化声音文件体积:三、优化引擎代码体积:四、 优化字体字库文件大小: 引言 优化Cocos Creator项目的包体体积是一个常见且重要的任务,尤其是在移动设备和网…

【Flowable | 第二篇】使用Flowable实现请假流程

文章目录 3.使用Flowable实现请假流程3.1部署测试环境3.2工作流/我的任务菜单3.3设计请假流程3.4绑定业务表3.5申请请假3.6节点审批人审批3.6.1审批动作3.6.2流程状态 3.使用Flowable实现请假流程 3.1部署测试环境 我们使用开源的若依框架,来实现Flowable请假流程…

17102 “一条路径图”的最大独立集问题

这个问题可以通过动态规划来解决。我们可以定义一个数组f,其中f[i]表示从最左边的节点沿着一条路径到节点vi为止,具有的独立集最大权值之和。然后我们可以通过比较f[i-1],f[i-2]w[i]和w[i]的值,来更新f[i]。 以下是解题步骤&…

应用数学与机器学习基础 - 多任务学习篇

序言 在人工智能的浩瀚星空中,深度学习作为一颗璀璨的明星,正引领着技术革命的新浪潮。随着数据量的爆炸性增长和计算能力的飞跃,深度学习模型在诸多领域展现出了前所未有的性能与潜力。而多任务学习(Multi-Task Learning, MTL&a…

科技云报道:产业为根大模型应用为擎,容联云推动企业营销服场景重塑

科技云报道原创。 “没有应用,光有一个基础模型,不管是开源还是闭源,一文不值。”在2024世界人工智能大会(WAIC 2024)现场,百度创始人、董事长兼首席执行官李彦宏直言。 国产大模型的种类越发丰富&#x…

纯净IP的重要性解析与测评分析

作为连接互联网世界的桥梁,IP地址的纯净度不仅关乎网络访问的速度与稳定性,更是影响着数据安全与隐私保护。今天,我们将带您深入探索纯净IP的重要性,并分享我们对芝麻HTTP与巨量IP这两家提供纯净SOCKS5代理服务的深度测评分析。 一…

AI算法15-弹性网络回归算法Elastic Net Regression | ENR

弹性网络回归算法简介 在机器学习领域中,弹性网络(Elastic Net)是一种结合了L1范数(套索回归)和L2范数(岭回归)的正则化方法。它综合了两者的优点,既可以实现特征选择,又…

ubuntu18修改文件打开数

Ubuntu18永久修改 最大文件打开数和最大线程数 1、查看操作系统: cat /etc/os-release2、查看当前用户设置: ulimit -a 或者: ulimit -nopen files 是当前最大文件打开数量 max user processes是当前最大线程数量 3、永久修改配置&#x…

【学习笔记】4、组合逻辑电路(下)

接前文《【学习笔记】4、组合逻辑电路(上)》 4.4.5 算术运算电路 1. 半加器和全加器 半加器和全加器是算术运算电路中的基本单元。半加器和全加器是1位相加的组合逻辑电路。 (1)半加器 半加器:只考虑两个加数本身,不考虑低位进…

【第27章】MyBatis-Plus之Mybatis X 插件

文章目录 前言一、安装指南二、核心功能1.XML 映射跳转2.代码生成3. 重置模板 三、JPA 风格提示四、常见问题解答1. JPA 提示功能无法使用?2. 生成的表名与预期不符? 五、代码生成模板配置1. 默认模板2. 重置默认模板3. 自定义模板内容3.1 实体类信息3.2…

暑期备考2024小学生古诗文大会:吃透历年真题和知识点(持续)

2024年上海市小学生古诗文大会的自由报名初赛将于10月19日(星期六)正式开始,还有3个多月的时间。 为帮助孩子们备考,我持续分享往年上海小学生古诗文大会真题,这些题目来自我去重、合并后的1700在线题库,每…

Python中的数据容器及其在大数据开发中的应用

在Python编程中,数据容器是存储和组织数据的基本工具。作为大数据开发者,了解并灵活运用各种容器类型对于高效处理大规模数据至关重要。今天,我们将从Set出发,探讨Python中的各种数据容器,以及它们在大数据处理中的应用…

思维+构造,CF 1059C - Sequence Transformation

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1059C - Sequence Transformation 二、解题报告 1、思路分析 n 1,2,3的情况从样例已知 考虑n > 4的情况 我们考虑要字典序最大,自然要最早出现非1的数,…

springboot+vue 开发记录(九)后端打包部署运行

本篇文章主要内容是后端项目写好了,怎么打包部署到服务器上运行。 文章目录 1. 在服务器上安装Docker2. 在Docker中装MySQL3. 在Docker中设置网桥,实现容器间的网络通信4. 修改后端配置文件5. 修改pom.xml文件6. 打包7. 编写DockerFile文件8. 上传文件到…

《昇思25天学习打卡营第17天|K近邻算法实现红酒聚类》

K近邻算法原理介绍 K近邻算法(K-Nearest-Neighbor, KNN)是一种用于分类和回归的非参数统计方法,最初由 Cover和Hart于1968年提出是机器学习最基础的算法之一。它正是基于以上思想:要确定一个样本的类别,可以计算它与所…

CSS【详解】文本相关样式(含 font 系列样式,文本颜色 color,三种颜色表示法,文本排版-含最佳实战范例,文本装饰,分散对齐,渐变色文本等)

文本风格 font-style font-style:italic 值描述normal默认值。浏览器显示一个标准的字体样式。italic加载对应字体的斜体字体文件,若找不到斜体字体文件,则进行物理上的倾斜。 标签默认font-style:italicoblique浏览器会显示一个倾斜的字体样式。 文本粗…

计算机网络——网络层(IP地址与MAC地址、地址解析协议ARP、IP数据报格式以及转发分组、ICMP、IPV6)

IP地址与MAC地址 由于MAC地址已固化在网卡上的ROM 中,因此常常将 MAC地址称为硬件地址或物理地址;物理地址的反义词就是虚拟地址、软件地址或逻辑地址,IP地址就属于这类地址。 从层次的角度看,MAC地址是数据链路层使用的地址&…

Java 面试相关问题(上)——基础问题集合问题

这里只会写Java相关的问题,包括Java基础问题、JVM问题、线程问题等。全文所使用图片,部分是自己画的,部分是自己百度的。如果发现雷同图片,联系作者,侵权立删。 1. Java基础面试问题1.1 基本概念相关问题1.1.1 Java语言…

配置Maven并使用IDEA新建一个简单的Springboot项目

一.maven的配置 1.查看电脑上是否配置了maven ①使用快捷键“WinR”打开运行窗口,在窗口中输入cmd,点击确定进入黑色命令窗口 ②在命令行窗口中输入如下命令 mvn -version 如果出现下面的提示则表示该电脑已配置maven,否则需要进行maven配…