测试用例是否测试通过是通过将预期结果与实际结果做比较来判定的,那代码中怎么来判定用例是否通过呢?在python中这种判定的方法就叫做断言,断言可以使用python的assert方法,也可以使用unittest框架提供的一系列断言方法。

unittest常用断言方法如下

方法 说明
assertEqual(arg1, arg2, msg=None) 验证arg1=arg2,不等则fail
assertNotEqual(arg1, arg2, msg=None) 验证arg1 != arg2, 相等则fail
assertTrue(expr, msg=None) 验证expr是true,如果为false,则fail
assertFalse(expr,msg=None) 验证expr是false,如果为true,则fail
assertIsNone(expr, msg=None) 验证expr是None,不是则fail
assertIsNotNone(expr, msg=None) 验证expr不是None,是则fail
assertIn(arg1, arg2, msg=None) 验证arg1是arg2的子串,不是则fail
assertNotIn(arg1, arg2, msg=None) 验证arg1不是arg2的子串,是则fail
assertIs(arg1, arg2, msg=None) 验证arg1、arg2是同一个对象,不是则fail
assertIsNot(arg1, arg2, msg=None) 验证arg1、arg2不是同一个对象,是则fail
assertGreater(arg1, arg2, msg=None) 验证arg1大于arg2,不是则fail
assertGreaterEqual(arg1, arg2, msg=None) 验证arg1大于等于arg2,不是则fail
assertLess(arg1, arg2, msg=None) 验证arg1小于arg2,不是则fail
assertLessEqual(arg1, arg2, msg=None) 验证arg1小于等于arg2,不是则fail
assertRaises(expected_exception) 使用with语句,断言执行的代码快会抛指定异常

代码如下

import unittest

class Demo(unittest.TestCase):

    def raise_value_error(self):
raise ValueError def test_assert(self):
a, b = 1, 2
c = None
d = True
e = False
f = [1, 3, 4]
g = h = 5 # >>比较断言
# 断言相等
assert a + b == 3
self.assertEqual(a+b, 3)
# 断言不等
assert a + b != 4
self.assertNotEqual(a+b, 4) # >>空值断言
# 断言非空
assert a is not None
self.assertIsNotNone(a)
# 断言为空
assert c is None
self.assertIsNone(c) # >>布尔值断言
# 断言为True
assert d is True
self.assertTrue(d)
# 断言为False
assert e is False
self.assertFalse(e) # >>包含断言
# 断言包含在内
assert a in f
self.assertIn(a, f)
# 断言不包含在内
assert b not in f
self.assertNotIn(b, f) # >>对象断言
# 断言是同一个对象
assert g is h
self.assertIs(g, h)
# 断言不是同一个对象
assert a is not h
self.assertIsNot(a, h) # >>断言预期异常
with self.assertRaises(ValueError):
self.raise_value_error() if __name__ == '__main__':
unittest.main()

unittest_assert断言(4)的更多相关文章

  1. iOS-----程序异常处理----- 断言NSAssert()和NSParameterAssert区别和用处

    NSAssert和assert是断言,主要的差别是assert在断言失败的时候只是简单的终止程序,而NSAssert会报告出错误信息并且打印出来.所以尽管的使用NSAssert,可以不去使用asser ...

  2. GO语言总结(5)——类型转换和类型断言

    上一篇博客介绍了Go语言的数组和切片——GO语言总结(4)——映射(Map),本篇博客介绍Go语言的类型转换和类型断言 由于Go语言不允许隐式类型转换.而类型转换和类型断言的本质,就是把一个类型转换到 ...

  3. postman 断言解析

    最近在学习postman官方文档, 顺势翻译出来,以供学习! postman断言是JavaScript语言编写的,在postman客户端指定区域编写即可. 断言会在请求返回之后,运行,并根据断言的pa ...

  4. 测试框架Mocha与断言expect

    测试框架Mocha与断言expect在浏览器和Node环境都可以使用除了Mocha以外,类似的测试框架还有Jasmine.Karma.Tape等,也很值得学习. 整个项目源代码: 为什么学习测试代码? ...

  5. JavaScrict中的断言调试

    今天在看忍者秘籍的时候,看到一个断言方法.查阅了一下资料,原来javascript中的console也包含这个方法.具体用法如下: <script type="text/javascr ...

  6. 断言与异常(Assertion Vs Exception)

    在日常编程实践中,断言与异常的界限不是很明显,这也使得它们常常没有被正确的使用.我也在不断的与这个模糊的怪兽搏斗,仅写此文和大家分享一下我的个人看法.我想我们还可以从很多角度来区别断言和异常的使用场景 ...

  7. 断言(Assert)与异常(Exception)

    断言是被用来检查非法情况而不是错误情况,即在该程序正常工作时绝不应该发生的非法情况,用来帮助开发人员对问题的快速定位.异常处理用于对程序发生异常情况的处理,增强程序的健壮性.容错性,减少程序使用中对用 ...

  8. Linux Kernel 代码艺术——编译时断言

    本系列文章主要写我在阅读Linux内核过程中,关注的比较难以理解但又设计巧妙的代码片段(不关注OS的各个模块的设计思想,此部分我准备写在“深入理解Linux Kernel” 系列文章中),一来通过内核 ...

  9. selenium自动化-java-封断言类2

    封装断言类 package streamax.com; import java.util.ArrayList; import java.util.List; import org.testng.Ass ...

随机推荐

  1. .Net Core MVC全局过滤器验证是否需要登录

    1.新增全局登录过滤器LoginCheckAttribute 1 public class LoginCheckAttribute: ActionFilterAttribute 2 { 3 publi ...

  2. Redis - 2 - 聊聊Redis的RDB和AOF持久化 - 更新完毕

    1.RDB 1.1).RDB是什么? RDB,全称Redis Database RDB是Redis进行持久化的一种方式,当然:Redis默认的持久化方式也是RDB 1.2).Redis配置RDB 1. ...

  3. centos部署golang环境

    目录 一.简介 二.部署 一.简介 Go语言(或 Golang)起源于 2007 年,并在 2009 年正式对外发布.Go 是非常年轻的一门语言,它的主要目标是"兼具 Python 等动态语 ...

  4. 删除空行(嵌套)(Power Query 之 M 语言)

    数据源: "姓名""基数""个人比例""个人缴纳""公司比例""公司缴纳"&qu ...

  5. Visual SVN安装使用教程

    visual svn使用教程  SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本. ...

  6. CF816A Karen and Morning 题解

    Content 给定一个时间 \(h:m\),求从现在这个时间开始到下一个离该时间最近的回文时间要多久? 数据范围:\(0\leqslant h\leqslant 23,0\leqslant m\le ...

  7. CF831B Keyboard Layouts 题解

    Content 给你 \(26\) 个字母的映射(都是小写,大写的映射方式相同),再给你一个字符串 \(s\),求它的映射结果(如果有非字母的字符保持不变). 数据范围:\(1\leqslant |s ...

  8. LuoguP7189 [COCI2007-2008#6] PARKING 题解

    Content 有 3 辆卡车,第 \(i\) 辆卡车停车开始时间为 \(l_i\),结束时间为 \(r_i\)(不包含).现在有以下收费方式: 停车辆数 每分钟每辆车单价 \(1\) \(a\) \ ...

  9. python3 5月26日 time模块常用时间转换 &datetime()模块学习 random()

    import time  获取当前时间: 指定字符串格式:time.strftime("%Y-%m-%d %H:%M:%S") 当前时间戳:time.time() 当前时间元组格式 ...

  10. C++ 11 新特性:函数声明auto

    1.概览 1.1 函数名中的箭头,用来表明函数的return type,其使用在函数的返回类型需要通过模板参数进行推导,使用在decltype()和declval()不方便的场景 2.正文 c++ 中 ...