《爆肝整理》保姆级系列教程python接口自动化(二十四)--unittest断言——中(详解)

news/2024/4/20 15:13:32/文章来源:https://blog.csdn.net/weixin_48500307/article/details/129244611

简介

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

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

b站最牛Jmeter接口测试和Jmeter接口自动化测试全集_哔哩哔哩_bilibili

接口文档

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

天气预报

获取实时天气

请求方式: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,以及请求方式 。

设计测试用例

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()

小结

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

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

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

展现效果如下:

这里写图片描述

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

这里写图片描述

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

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

下载地址:GitHub - gildas-lormeau/JSONVue: Fork of JSONView for Chromium-based browsers

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

2、解压这个压缩包

这里写图片描述

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

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

方式二:

4、加载JsonView扩展程序

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

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

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

 总结:在测试行业摸爬滚打也有十几年了,在学习的途中也是收藏了很多的学习资源,下面是软件测试到测试开发全职业生涯全套学习资料

【需要的可以点击下方官方推广小卡片扫码备注000免费领取】

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

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

相关文章

继电器的工作原理、构成和功能介绍

随着电力应用的不断发展,电气设备已经深入到我们的日常生活中,电气自动化技术大量使用在电力系统和生产型企业中,人们在享受电带来方便的同时要注意用电保护。继电器就是为了保护电路而生的,可以提高电路可靠性,保障用…

RabbitMQ实现死信队列

目录死信队列是什么怎样实现一个死信队列说明实现过程导入依赖添加配置编写mq配置类添加业务队列的消费者添加死信队列的消费者添加消息发送者添加消息测试类测试死信队列的应用场景总结死信队列是什么 “死信”是RabbitMQ中的一种消息机制,当你在消费消息时&#…

wafw00f 防火墙探测

kali机器自带防火墙探测工具wafw00,它可以通过发送正常以及不正常甚至包含恶意代码的HTTP请求,来探测网站是否存在防火墙,并识别防火墙的厂商及类型。安装:git clone https://github.com/EnableSecurity/wafw00f.git python setup…

Windows如何查看某个端口被占用的情况?

在工作中,有时会发现端口被占用的情况,导致软件报错或者服务无法启动等问题。在不知道具体哪个进程占用该端口号的情况下,我们可以用下面方法来查找。 举例:我现在发现8090端口被占用了,我现在需要找到并杀掉该进程。…

TCP状态转换

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 TCP状态转换专栏:《Linux从小白到大神》《网络编程》 TCP状态转换示意图如下 针对上面的示…

高并发之读多写少的场景设计(用户中心)

用户中心是一个典型的读多写少系统,可以说我们大部分的系统都属于这种类型,而这类系统通过缓存就能获得很好的性能提升。并且在流量增大后,用户中心通常是系统改造中第一个要优化的模块,因为它常常和多个系统重度耦合,…

消息队列介绍和RabbitMQ的安装

1.消息队列 1.1 MQ的相关概念 1.1.1 什么是MQ MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在…

高阶人生从在职读研开始——中国社科院与美国杜兰大学金融管理硕士

说到学历,好多人都不太在意,感觉学历没什么用。等升职学历被卡时,等你想考公学历达不到时,当你想跳槽更大的平台时,学历会显得尤其重要。当机会来临时,我们应该做好全足的准备,而不是眼瞅着机会…

SpringBoot相关操作

01-今日内容 Spring概述、快速入门SpringBoot配置SpringBoot整合 02-SpringBoot概述 SpringBoot提供了一种快速使用Spring的方式,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的…

金融信创步入快车道,应“需”而生的监控易运维方案为国产化助力

在我国“28N”信创三步走战略中,金融信创赫然名列其中,成为最早践行信创理论与实操的行业之一。截止到目前,金融信创渗透率业已仅次于党政部门,位列“8”大重点行业之首。超快的发展速度,让金融信创较早的步入“买方市…

浅谈模型评估选择及重要性

作者:王同学 来源:投稿 编辑:学姐 模型评估作为机器学习领域一项不可分割的部分,却常常被大家忽略,其实在机器学习领域中重要的不仅仅是模型结构和参数量,对模型的评估也是至关重要的,只有选择那…

前端开发:JS的节流与防抖

前言 在前端实际开发中,有关JS原生的节流和防抖处理也是很重要的点,关于底层和原理的掌握使用,尤其是在性能优化方面甚为重要。作为前端开发的进阶内容,在实际开发过程中节流和防抖通常都是项目优化的必要手段,而且也是…

机器学习笔记之近似推断(二)推断的核心思想

机器学习笔记之近似推断——推断的核心思想引言回顾:推断的目的与困难推断的目的推断的困难推断的核心思想——优化引言 上一节介绍了从深度学习的角度介绍了推断,并介绍了推断的目的和困难。本节将继续介绍推断的核心思想。 回顾:推断的目…

写给交互设计新手的信息架构全方位指南

目录什么是信息架构?通用方法日常工作可以关注的大神常用工具相关书籍什么是信息架构?信息架构是一个比众多其他领域更难定义的领域。内容策划由内容策划师来完成,交互设计由设计师来完成,而信息架构的完成与它们不同,…

达梦数据库(DM8)集成使用 Geotools(27.2)

达梦数据库(DM8)集成使用 Geotools(27.2)系统环境版本达梦 8 集成 Geotools 环境安装达梦8,请参照项目 pom.xml 添加 geotools 配置项目 pom.xml 添加达梦数据库驱动包Geotools 使用示例Geotools 连接数据库Geotools 空…

CLion Remote Debug CrossCompile

CLion远程Docker调试ROS(交叉编译)的设置步骤 准备一个好用的docker,运行起来(Docker Image一定可以跑cuda和图形界面的,否则启动不了CLion,可以不用浪费时间看本教程了) 在docker镜像中配置好ssh和rsync,…

测量 R 代码运行时间的 5 种方法

简介 平常在撰写论文时,会需要比较算法之间的计算时间。本篇文章给出几种测量 R 代码运行时间的方法。本文是小编学习过程中的笔记,主要参考博客1,2。 1. 使用 Sys.time() 小编通常使用 Sys.time() 函数来计算时间。首先记录当前运行时刻&…

数据结构与算法之Huffman tree(赫夫曼树 / 霍夫曼树 / 哈夫曼树 / 最优二叉树)

目录赫夫曼树概述定义构造赫夫曼树步骤代码实现赫夫曼树概述 HuffmanTree因为翻译不同所以有其他的名字:赫夫曼树、霍夫曼树、哈夫曼树 赫夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点…

如何在logback.xml中自定义动态属性

原文地址:http://blog.jboost.cn/trick-logback-prop.html 当使用logback来记录Web应用的日志时,我们通过在logback.xml中配置appender来指定日志输出格式及输出文件路径,这在一台主机或一个文件系统上部署单个实例没有问题,但是…

超店有数分享:2023还有哪些tiktok数据值得关注?

目前,tiktok是全球增长最迅猛的社交媒体软件之一。很多商家瞄准了tiktok的变现转化潜力,纷纷入局tiktok电商赛道。在入局这个赛道之前,我们需要了解一些tiktok的相关数据,这样才能更好的了解大局,及时调整自己的业务情…