python unittest断言_python接口自动化(二十四)--unittest断言——中(详解)
简介
上一篇通过简单的案例给小伙伴们介绍了一下unittest断言,这篇我们将通过结合和围绕实际的工作来进行unittest的断言。这里以获取城市天气预报的接口为例,设计了 2 个用例,一个是查询北京的天气,一个是查询
南京为例,你也可以查询别的城市的天气预报。
接口文档
1、在实际工作中,开发人员都会给你接口文档方便QA测试,和其他系统的开发人员对接。接口文档如下:
天气预报
获取实时天气
请求方式:POST
请求地址:https://www.apiopen.top/weatherApi
Query参数名类型必需描述示例 e.g.
city
string
是
城市名称
成都
返回示例:
{
"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-8
2 #1.先设置编码,utf-8可支持中英文,如上,一般放在第一行3
4 #2.注释:包括记录创建时间,创建人,项目名称。5 '''6 Created on 2019-4-26
7 @author: 北京-宏哥8 Project:学习和使用unittest框架编写断言-中篇9 '''10 #3.导入requests和unittest模块11 import requests12 import unittest13 #4.编写测试用例和断言14 classTestWeather(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('北京'inr.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('南京' inr.text)45
46 if __name__ == "__main__":47 unittest.main()
小结
1、实际中的接口和这个也差不多,你可以增加没有这个城市的等等测试用例,可根据实际需要增加多个测试用例全面的断言。
2、实际开发或者测试工作中经常用到json数据,那么就会有这样一个需求:在谷歌浏览器中访问URL地址返回的json数据能否按照json格式展现出来。
展现效果如下:
那么安装了JsonView扩展程序后的展现效果如下:
很明显,后者的效果更好。实现步骤如下:
1、下载JsonView扩展程序压缩包
点击【Clone or download】——【Download Zip】
2、解压这个压缩包
3、打开谷歌浏览器的扩展程序界面
方式一:在谷歌浏览器地址栏中输入:chrome://extensions/
方式二:
4、加载JsonView扩展程序
选中开发者模式,点击【加载正在开发的扩展程序…】,选择插件目录(D:\JSONView-for-Chrome-master\WebContent)
点击确定后,就安装上了。安装后界面如下:
安装完成,重新加载 (Ctrl+R)。
python unittest断言_python接口自动化(二十四)--unittest断言——中(详解)相关推荐
- python 字符串替换_Python基础教程,第四讲,字符串详解
本节课主要和大家一起学习一下Python中的字符串操作,对字符串的操作在开发工作中的使用频率比较高,所以单独作为一课来讲. 学完此次课程,我能做什么? 学完本次课程后,我们将学会如何创建字符串,以及如 ...
- (二十四)解释器模式详解
作者:zuoxiaolong8810(左潇龙),转载请注明出处. 解释器模式是平时工作当中相对冷门的一个设计模式,也非常的难于理解,百度百科上的解释也非常之少,只是简单的介绍了一下,并且说了一句,可以 ...
- python接口自动化测试二十四:上传多个附件,参数化
python接口自动化测试二十四:上传多个附件,参数化 # 添加多个附件参数化files = [("1.png", "1.png") ("2.png& ...
- 二十四、Struts2中的UI标签
二十四.Struts2中的UI标签 Struts2中UI标签的优势: 数据回显 页面布局和排版(Freemark),struts2提供了一些常用的排版(主题:xhtml默认 simple ajax) ...
- 深度学习之图像分类(二十五)-- S2MLPv2 网络详解
深度学习之图像分类(二十五)S2MLPv2 网络详解 目录 深度学习之图像分类(二十五)S2MLPv2 网络详解 1. 前言 2. S2MLPv2 2.1 S2MLPv2 Block 2.2 Spat ...
- 深度学习之图像分类(二十六)-- ConvMixer 网络详解
深度学习之图像分类(二十六)ConvMixer 网络详解 目录 深度学习之图像分类(二十六)ConvMixer 网络详解 1. 前言 2. A Simple Model: ConvMixer 2.1 ...
- (十四)桥接模式详解(都市异能版) - 转
作者:zuoxiaolong8810(左潇龙),转载请注明出处. 魔都国贸附近,某天夜里十一点半. 那一晚,魔都出奇的没有做只打雷不下雨的勾当,老天似乎是要将魔都淹没一般,倾盆大雨像不要命似的拍打着地 ...
- MySQL数据库,从入门到精通:第十四篇——MySQL视图详解
MySQL数据库,从入门到精通:第十四篇--MySQL视图详解 第 14 篇_视图 1. 常见的数据库对象 2. 视图概述 2. 1 为什么使用视图? 2. 2 视图的理解 3. 创建视图 3. 1 ...
- python二维图颜色函数_Python绘图之二维图与三维图详解
各位工程师累了吗? 推荐一篇可以让你技术能力达到出神入化的网站"持久男" 1.二维绘图 a. 一维数据集 用 Numpy ndarray 作为数据传入 ply 1. import ...
- 判断字符串格式_Python基础教程,第四讲,字符串详解
本节课主要和大家一起学习一下Python中的字符串操作,对字符串的操作在开发工作中的使用频率比较高,所以单独作为一课来讲. 学完此次课程,我能做什么? 学完本次课程后,我们将学会如何创建字符串,以及如 ...
最新文章
- Linux自动删除n天前日志
- okhttp3测试框架_easy-okhttp: 这是一个对okhttp3进行封装的工具,提供了更为便捷的方法调用。目的是为了替换难用的apache HttpClient。...
- STOLUCK:经济下行的当下 ,STO或将帮助中小企业度过寒冬
- Spring IoC 容器
- EntityFramework Code-First—领域类配置之DataAnnotations
- Java StringBuilder codePointAt()方法与示例
- php 截取www后面的目录,php-如何从字符串路径中获取最后一个目录
- 关于ibatis.net框架(NPetshop学习)
- 手把手教你使用 VuePress 搭建个人博客
- Spark源码系列(二)RDD详解
- WinMerge 过滤器用法
- 阿里云教你掌握API的使用方法
- 万物Linux皆可刷安卓,万物皆可Win,开发者成功在安卓手机刷入Win10系统
- STATA regress回归结果分析
- Java关于LocalDate、LocalTime、LocalDateTime类的详细讲解
- 0422-团队项目1
- Dev C++ 安装及使用方法教程-超详细
- java程序设计之网络编程基础教程_Java程序设计之网络编程基础教程
- 配置与管理Web服务器
- 全国高速公路一览表_拔剑-浆糊的传说_新浪博客
热门文章
- SAP License:更改物料基本计量单位
- Effective Go中文版(更新中)
- Java基础——Oracle(二)
- 百度地图上的标注物太多导致界面卡顿的解决办法
- WCF技术剖析之六:为什么在基于ASP.NET应用寄宿(Hosting)下配置的BaseAddress无效...
- [转]SQL:JOIN用法
- Xcode 自动对齐 插件
- ADOQUERY,CLIENTDATASET,ADOSTOREPROC执行存储过程【多种方法】
- java_opts 参数与JVM内存调优
- springcloud-eureka简单实现