简介

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

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

接口文档

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-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 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扩展程序压缩包

下载地址: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)。

为了方便大家在移动端也能看到我分享的博文,现已注册个人微信公众号,扫描左下方二维码即可,欢迎大家关注,有时间会及时分享相关技术博文。

为了方便大家互动讨论相关技术问题,现已组建专门的微信群,由于微信群满100,请您扫描右下方宏哥个人微信二维码拉你进群(请务必备注:进群),欢迎大家加入这个大家庭,我们一起畅游知识的海洋。

感谢您花时间阅读此篇文章,如果您觉得这篇文章你学到了东西也是为了犒劳下博主的码字不易不妨打赏一下吧,让博主能喝上一杯咖啡,在此谢过了!

如果您觉得阅读本文对您有帮助,请点一下左下角“推荐”按钮,您的“推荐”将是我最大的写作动力!另外您也可以选择a href="">【关注我】,可以很方便找到我!

本文版权归作者和博客园共有,来源网址:

python读取每一行文字二十四_python接口自动化(二十四)--unittest断言——中(详解)...相关推荐

  1. python的实现和测试是啥意思_Python接口自动化测试之pytest与unittest区别

    引言 我们在使用python做接口测试的时候,搭建的接口测试框架都是python的单元测试框架,而python的单元测试框架很多unittest.pytest.nose等 什么是单元测试 我们知道软件 ...

  2. python 从excel中抓取数据_python接口自动化(三)——从excel中获取数据

    python接口自动化(三)--从excel中获取数据 1.按照之前的设计思路,我们需要从excel中去获取测试用例,所我们先封装一个获取数据的工具 from Data.with_config imp ...

  3. python重定向_Python接口自动化(十)重定向(Location)

    在实际工作中,有些接口请求完以后会重定向到别的url,而你却需要重定向前的url. 1.请求转发 该动作是服务器行为,在web容器中进行的,客户端对于跳转是不知道的,地址栏中显示的URL是不会变化的, ...

  4. python攻击某个wifi设备使断网_Python实现WiFi断线自动重连的方法详解

    实现 WiFi 断线自动重连,原理是用 Python 监测网络是否断线,如果断线则重启网络服务.接下来给大家分享实现代码,需要的朋友参考下 1.Python 代码 autowifi.py,放在 /ho ...

  5. [Python从零到壹] 四十五.图像增强及运算篇之图像灰度非线性变换详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  6. [Python从零到壹] 四十七.图像增强及运算篇之腐蚀和膨胀详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  7. [系统安全] 四十四.APT系列(9)Metasploit技术之基础用法万字详解及防御机理

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  8. python封装接口用于调用_python接口自动化(三十五)-封装与调用--流程类接口关联(详解)...

    简介 流程相关的接口,主要用 session 关联,如果写成函数(如上篇),s 参数每个函数都要带,每个函数多个参数,这时候封装成类会更方便.在这里我们还是以博客园为例,带着小伙伴们实践一下. 接口封 ...

  9. 36.深度解密三十六:网络舆情监测之另类“免费监测”方法详解

    网络营销推广技术.技巧深度解密(三十六)指南: 1.本文档适合零基础以及互联网营销推广工作者,主要讲解免费网络舆情监测的问题. 2.原创版权文档,任何抄袭或者全部.部分模仿都是侵权行为. 3.敬畏法律 ...

最新文章

  1. 【腾讯代码文化】人均3.6万行代码,《腾讯研发大数据报告》正式发布!
  2. windows云服务器价格_免费windows云服务器
  3. 分布式部署Zabbix监控平台
  4. Tcl与Design Compiler (三)——DC综合的流程
  5. open source project for recommendation system
  6. when is One Order gt_plan_exets filled
  7. Eclipse设置Courier New字体
  8. mysql 5.6.26 编译安装
  9. 尚硅谷全套课件整理:Java、前端、大数据、安卓、面试题
  10. (原创)安卓抓包方案分享
  11. python 自动发送微信消息 (win)
  12. 报错及解决:Kernel does not exist: 96b59d42-d81e-471c-8ef9-63a61a963a16
  13. Verilog学习笔记HDLBits——Shift Registers
  14. 知识竞赛软件使用说明
  15. 归一化相关系数NCC
  16. 用Python做了个私活,小赚3W,说下接单心得
  17. Required string parameter ‘XXX‘ is not present
  18. scenario知识点总结
  19. 关于Spring Security中显示There is no PasswordEncoder mapped for the id “null“的问题分析
  20. 植物病原菌致病性测定

热门文章

  1. linux 复制文件或者文件
  2. mybatis 执行插入操作,insert 返回1,数据库中无数据。数据库中数据的创建时间和插入执行时间不一致。
  3. linux安装docker部署java项目
  4. Android 取消返回键返回事件,返回桌面,再按一次退出程序,双击事件
  5. Java操作Mongo bulkWrite批量入库
  6. GitChat专栏:Spring Cloud 与 Consul 的整合使用
  7. git 大文件报错Out of memory, malloc failed、 The remote end hung up unexpectedly
  8. js react根据几个颜色点计算区间任意数值对应颜色
  9. centos7 postgresql安装
  10. c语言编译器不支持64位,什么编译器支持64位整数?