IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 自动化测试项目实战06:断言 -> 正文阅读

[开发测试]自动化测试项目实战06:断言

大家好,我是谭叔。

本期重点解决上期遗留的问题——如何让电脑判定用例的执行结果。

解决问题的思路跟你做功能测试是一个道理,当你测试登录接口时,你得观察登录接口返回成功还是失败,以判断登录是否成功。

那么,做自动化测试时,如何让程序判断执行结果是不是你想要的

简单判断

修改test_add_department_001和test_add_department_002用例,加上if else的判断。

    def test_add_department_001(self):
        """新增T01学院"""
        result = ETReq.post(url=ETConfig.URL,
                            data=json.dumps({"data":[{"dep_id":"T01","dep_name":"Test学院","master_name":"Test-Master","slogan":"Here is Slogan"}]}))
        # 判断请求结果
        result = json.loads(result.text)
        if result['already_exist']['count'] == 0:
            print("{} 执行成功".format(self._testMethodName))
        else:
            print("{} 执行失败".format(self._testMethodName))


    def test_add_department_002(self):
        """重复新增T01学院"""
        # self.test_add_department_001() # 或者贴一段新增T01的请求代码ETReq.post
        result = ETReq.post(url=ETConfig.URL,
                            data=json.dumps({"data":[{"dep_id":"T01","dep_name":"Test学院","master_name":"Test-Master","slogan":"Here is Slogan"}]}))
        # 判断请求结果
        result = json.loads(result.text)
        if result['already_exist']['count'] == 1:
            print("{} 执行成功".format(self._testMethodName))
        else:
            print("{} 执行失败".format(self._testMethodName))

看看结果吧:

image-20210530205113006

这样,我们便构造了一个简单的if else断言方式,让程序走判断逻辑。

但,你可能意识到这么写,略有不妥——代码冗余,不好维护。

一般来说,我们会使用unittest的assert断言来解决问题。

使用断言

unittest中断言主要有三种类型:

1、布尔断言。即,要么正确,要么错误

2、比较断言。通过比较两个变量的值得出布尔值,要么比较正确,要么比较错误

3、其他断言。如断言列表、元组等,使用情况较少

如图所示,输入assert,编辑器会自动联想所有的断言。

image-20210603172038206

针对本次接口自动化项目,我们使用简单的assertEqual(比较断言)。其他断言方式,你可以抽时间研究下,正确理解,根据自己的项目做合适的选择。

首先,去掉if else的判断部分。

image-20210603171708115

添加上assertEqual:

    def test_add_department_001(self):
        """新增T01学院"""
        result = ETReq.post(url=ETConfig.URL,
                            data=json.dumps({"data":[{"dep_id":"T01","dep_name":"Test学院","master_name":"Test-Master","slogan":"Here is Slogan"}]}))
        # 判断请求结果
        result = json.loads(result.text)
        # self.assertEqual(result['already_exist']['count'], 0) # 断言会失败
        self.assertEqual(result['already_exist']['count'], 1) # 断言会失败

image-20210603172921091

在控制台,我们可以看到最终的结果——断言失败。

image-20210603173031667

一如既往,做个总结

接口断言,本质上很简单,不过在真实场景下,你得解析复杂的数据结构,得根据业务场景细分断言种类,如接口断言、数据库断言等等,这些略有难度,但上手后,你依旧能很快掌握。

接口断言,本质上很简单,不过在真实场景下,你得解析复杂的数据结构,得根据业务场景细分断言种类,如接口断言、数据库断言等等,这些略有难度,但上手后,你依旧能很快掌握。**

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-08-23 16:59:40  更:2021-08-23 17:00:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 22:38:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码