首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
41 篇文章
1
python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)
2
python接口自动化(三)--如何设计接口测试用例(详解)
3
python接口自动化(四)--接口测试工具介绍(详解)
4
python接口自动化(六)--发送get请求接口(详解)
5
python接口自动化(五)--接口测试用例和接口测试报告模板(详解)
6
python接口自动化(七)--状态码详解对照表(详解)
7
python接口自动化(八)--发送post请求的接口(详解)
8
python接口自动化(十)--post请求四种传送正文方式(详解)
9
python接口自动化(九)--python中字典和json的区别(详解)
10
python接口自动化(十一)--发送post【data】(详解)
11
python接口自动化(十二)--https请求(SSL)(详解)
12
python接口自动化(十三)--cookie绕过验证码登录(详解)
13
python接口自动化(十四)--session关联接口(详解)
14
python接口自动化(十五)--参数关联接口(详解)
15
python接口自动化(十六)--参数关联接口后传(详解)
16
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
17
python接口自动化(十八)--重定向(Location)(详解)
18
python接口自动化(十九)--Json 数据处理---实战(详解)
19
python接口自动化(二十)--token登录(详解)
20
python接口自动化(二十一)--unittest简介(详解)
21
python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)
22
python接口自动化(二十三)--unittest断言——上(详解)
23
python接口自动化(二十四)--unittest断言——中(详解)
24
python接口自动化(二十五)--unittest断言——下(详解)
25
python接口自动化(二十六)--批量执行用例 discover(详解)
26
python接口自动化(二十七)--html 测试报告——上(详解)
27
python接口自动化(二十八)--html测试 报告——下(详解)
28
python接口自动化(二十九)--html测试报告通过邮件发出去——上(详解)
29
python接口自动化(三十)--html测试报告通过邮件发出去——中(详解)
30
python接口自动化(三十一)--html测试报告通过邮件发出去——下(详解)
31
python接口自动化(四十)- logger 日志 - 下(超详解)
32
python接口自动化(四十一)- 发xml格式参数的post请求(超详解)
33
python接口自动化(四十二)- 项目结构设计之大结局(超详解)
34
python接口自动化(三十二)--Python发送邮件(常见四种邮件内容)番外篇——上(详解)
35
python接口自动化(三十三)-python自动发邮件总结及实例说明番外篇——下(详解)
36
python接口自动化(三十四)-封装与调用--函数和参数化(详解)
37
python接口自动化(三十五)-封装与调用--流程类接口关联(详解)
38
python接口自动化(三十六)-封装与调用--流程类接口关联续集(详解)
39
python接口自动化(三十七)-封装与调用--读取excel 数据(详解)
40
python接口自动化(三十八)-python操作mysql数据库(详解)
41
python接口自动化(三十九)- logger 日志 - 上(超详解)

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

简介

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

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

接口文档

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

天气预报

获取实时天气

请求方式:POST

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

Query参数名

类型

必需

描述

示例 e.g.

city

string

城市名称

成都

返回示例:

代码语言:javascript
复制
                                {
    "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、参考代码

代码语言:javascript
复制
 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)。

下一篇
举报
领券