『心善渊』Selenium3.0基础 — 26、unittest测试框架的断言
1、断言介绍
在执行测试用例的过程中,最终用例是否执行通过,是通过判断测试得到的实际结果和预期结果是否相等决定的,这时会用到断言方法。
本着没有消息就是最好的消息的原则,如果断言成功不采取任何措施(不输入任何日志),否则就会触发AssertionError(断言错误)的异常。
2、常用的断言方法
| 断言方法名称 | 使用参数 | 验证 |
|---|---|---|
assertEqual()(常用) |
a,b,[msg='测试失败时打印的信息'] | 断言a和b是否相等,相等则测试用例通过 |
assertNotEqual() |
a,b,[msg='测试失败时打印的信息'] | 断言a和b是否相等,不相等则测试用例通过。 |
assertTrue()(常用) |
x,[msg='测试失败时打印的信息'] | 断言x是否True,是True则测试用例通过 |
assertFalse() |
x,[msg='测试失败时打印的信息'] | 断言x是否false,是false则测试用例通过 |
assertIs() |
a,b,[msg='测试失败时打印的信息'] | 断言a是否是b,是则测试用例通过 |
assertNotIs() |
a,b,[msg='测试失败时打印的信息'] | 断言a是否是b,不是则测试用例通过 |
assertIsNone() |
x,[msg='测试失败时打印的信息'] | 断言x是否None,是None则测试用例通过 |
assertIsNotNone() |
x,[msg='测试失败时打印的信息'] | 断言x是否None,不是None则测试用例通过。 |
assertIn() |
a,b,[msg='测试失败时打印的信息'] | 断言a是否在b中,在b中则测试用例通过 |
assertNotIn() |
a,b,[msg='测试失败时打印的信息'] | 断言a是否在b中,不在b中则测试用例通过 |
assertIsInstance() |
a,b,[msg='测试失败时打印的信息'] | 断言a是否是b的一个实例,是则测试用例通过。 |
assertNotIsInstance() |
a,b,[msg='测试失败时打印的信息'] | 断言a是否是b的一个实例,不是则测试用例通过。 |
提示:如果
a和b断言失败,则输出msg中定义的信息,如果没有定义msg,则输出系统异常。
3、断言示例
"""
1.学习目标
必须掌握unittest中断言使用
2.语法
2.1 编写位置
在测试用例中去编写,先执行测试用例,最后一行断言。
2.2 使用的断言方法
注意:前边a是预期,后边b是测试实际的值
(1)assertEqual(a,b,msg)
断言a和b是否相等,如果相等,断言成功,否则断言失败
(2)assertTrue(x,msg)
断言条件x是否为True,如果是,断言成功,否则断言失败
(3)其他断言用法类似。
2.3 判定断言结果
断言成功,控制台没有任何提示
断言失败,控制台AssertionError关键字会出现
3.需求
编写一个有断言的测试类
"""
# 1 导入unittest
import unittest
# 2 创建测试类
class Test_demo(unittest.TestCase):
# 3 编写test case
def test_case_03(self):
"""测试用例3"""
print("执行测试用例3")
# 用例步骤执行完成后做断言
# assertEqual断言a和b是否相等
self.assertEqual(2, 1 + 1, msg="断言成功")
"""
执行结果:
断言成功,控制台没有任何提示
下面是总测试结果的日志:
执行测试用例3
# 在0.005秒内进行1次测试
Ran 1 test in 0.005s
# 测试用例全部通过
OK
"""
def test_case_02(self):
"""测试用例2"""
print("执行测试用例2")
# assertEqual断言a和b是否相等
self.assertEqual(3, 1 + 1, msg="断言失败")
"""
执行结果:
执行测试用例2
断言失败
3 != 2
Expected(预期) :2
Actual(实际) :3
下面会有报错信息(主要内容):
AssertionError: 2 != 3 : 断言失败
# 在0.008秒内进行1次测试
Ran 1 test in 0.008s
# 失败一个测试用例
FAILED (failures=1)
# 断言失败
Assertion failed
"""
def test_case_01(self):
"""测试用例1"""
print("执行测试用例1")
# 断言条件x是否为True
self.assertTrue(1 > 2, msg="条件不成立,断言失败")
# 4 编写普通方法
if __name__ == '__main__':
# 执行当前测试类中,以test开头的测试用例
unittest.main()
『心善渊』Selenium3.0基础 — 26、unittest测试框架的断言的更多相关文章
- 『心善渊』Selenium3.0基础 — 24、Selenium的expected_conditions模块详细介绍
目录 1.EC模块介绍 2.EC模块常用类 3.EC模块的使用 4.EC模块综合使用 (1)title_is(title)示例 (2)presence_of_element_located(locat ...
- 『心善渊』Selenium3.0基础 — 11、Selenium对元素常用操作
目录 1.Selenium对元素常用操作 2.Selenium对元素的其他操作 1.Selenium对元素常用操作 操作 说明 click() 单击元素 send_keys() 模拟输入 clear( ...
- 『心善渊』Selenium3.0基础 — 12、Selenium操作鼠标和键盘事件
目录 (一)对鼠标的操作 1.鼠标事件介绍 2.ActionChains 类鼠标操作的常用方法 3.perform()方法 4.鼠标事件操作步骤 5.示例 (1)右键单击.左键双击 (2)鼠标拖拽动作 ...
- 『心善渊』Selenium3.0基础 — 1、Selenium自动化测试框架介绍
目录 1.Selenium介绍 2.Selenium的特点 3.Selenium版本说明 4.拓展:WebDriver与Selenium RC的区别 5.Webdriver工作原理 1.Seleniu ...
- 『心善渊』Selenium3.0基础 — 3、使用Selenium操作浏览器对象的基础API
目录 1.导入Selenium库 2.创建浏览器对象 3.浏览器窗口大小设置 4.浏览器位置设置 5.请求访问网址 6.浏览器页面前进.后退和刷新 7.关闭浏览器 相比于高大上的各种Selenium进 ...
- 『心善渊』Selenium3.0基础 — 6、Selenium中使用XPath定位元素
目录 1.Selenium中使用XPath查找元素 (1)XPath通过id,name,class属性定位 (2)XPath通过标签中的其他属性定位 (3)XPath层级定位 (4)XPath索引定位 ...
- 『心善渊』Selenium3.0基础 — 29、使用HTMLTestRunner生成unittest的HTML报告
目录 1.HTMLTestRunner介绍 2.HTMLTestRunner的使用 3.测试报告示例 4.封装成模块 1.HTMLTestRunner介绍 HTMLTestRunner是一个基于uni ...
- 『心善渊』Selenium3.0基础 — 2、Selenium测试框架环境搭建(Windows)
目录 1.浏览器安装 2.浏览器驱动下载 (1)ChromeDriver for Chrome (2)Geckodriver for Firefox (3)IEDriverServer for IE ...
- 『心善渊』Selenium3.0基础 — 4、Selenium基础元素定位详解
目录 1.什么是元素定位 2.Selenium元素定位常用API (1)By_id 定位 (2)by_name 定位 (3)by_class_name 定位 (4)by_tag_name 定位 (5) ...
随机推荐
- 『动善时』JMeter基础 — 30、JMeter中JSON断言详解
目录 1.JSON断言组件界面详解 2.JSON断言组件的使用 (1)测试计划内包含的元件 (2)登陆接口请求界面内容 (3)JSON断言界面内容 (4)查看运行结果 (5)断言结果组件说明 3.JS ...
- 【七】Kubernetes 探针介绍 - 存活、就绪探针案例测试
一.探针概述 探针是有 kubelet 对容器执行的定期诊断,并不是由 Master 节点发起的探测,而是由每一个 Node 所在的 kubelet 进行探测,这样可以减轻 Master 节点系统负载 ...
- logstash收集时filebeat区分日志
logstash收集时filebeat区分日志 1.场景 filebeat在服务器中同时收集nginx和web项目日志,需要对两个日志在logstash中分别处理 2.版本区别 ==6.x之前 ...
- ADAS可行驶区域道路积水反光区域的识别算法
ADAS可行驶区域道路积水反光区域的识别算法 Water logging area reflecting recognition algorithm for ADAS 1. 工程概要 1.1 概述: ...
- PyTorch Data Parrallel数据并行
PyTorch Data Parrallel数据并行 可选择:数据并行处理 本文将学习如何用 DataParallel 来使用多 GPU. 通过 PyTorch 使用多个 GPU 非常简单.可以将模型 ...
- MPC算法
MPC算法 一. 引言 在工程技术方面,MPC全称可指Model Predictive Control模型预测控制(又称RHC, Receding Horizon ). 模型预测控制算法 一种 ...
- Linux架构思维导图
Linux架构思维导图 GUI(Graphical User Interface,图形用户界面) Linux学习路径 软件框架 Linux桌面介绍 FHS:文件系统目录标准 Linux需要特别注意的目 ...
- Docker系列——Grafana+Prometheus+Node-exporter微信推送(三)
在之前博文中,已经成功的实现了邮件推送.目前主流的办公终端,就是企业微信.钉钉.飞书.今天来分享下微信推送,我们具体来看. 企业微信 在配置企业微信推送时,需要有微信企业,具体如何注册.使用,另外百度 ...
- postgresql无序uuid性能测试
无序uuid对数据库的影响 由于最近在做超大表的性能测试,在该过程中发现了无序uuid做主键对表插入性能有一定影响.结合实际情况发现当表的数据量越大,对表插入性能的影响也就越大. 测试环境 Postg ...
- 用Redis实现签到功能
一.场景 在很多时候我们会遇到用户签到的场景,每天用户进入应用时,需要获取用户当天的签到状态,如果没签到,用户可以进行签到,并且得到相关的奖励.我们可能需要每天的签到情况,必要的时候可能还需要统计一下 ...