UnitTest中的断言使用

本文介绍了Python中unittest提供的几种断言方法,包括assertEqual、assertTrue等常用方法,还提及了其他方法。同时说明了使用断言的时机,如防御性编程、运行时检测程序逻辑等,强调了断言在代码中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面是unittest提供的几种断言方法来对测试结果进行判断

目录

下面是unittest提供的几种断言方法来对测试结果进行判断

常用的几种方法

assertEqual 和 assertNotEqual

assertTrue 和 assertFalse

assertIn 和 assertNotIn

assertIsNone 和 assertIsNotNone

assertIsNot

assertIsInstance 和 assertNotIsInstance

其他方法

使用时机



方法检查版本
assertEqual(a, b)a ==b 
assertNotEqual(a, b)a !=b 
assertTrue(x)bool(x) is True 
assertFalse(x)Bool(x) is False 
assertIs(a, b)a is b3.1
assertIsNot(a, b)a is not b3.1
assertIsNone(x)x is None3.1
assertIsNotNone(x)x is not None3.1
assertIn(a, b)a in b3.1
assertNotIn(a, b)a not in b3.1
assertIsInstance(a, b)isinstance(a,b)3.1
assertNotIsInstance(a, b)not isinstance(a,b)3.1

                                                                                                  图片来源

常用的几种方法

assertEqual 和 assertNotEqual

a = 'hello'
b = 'hello'
c = 'world'
# 判断内容与数据类型是否一致
self.assertEqual(a, b)
# 判断内容与数据是否不一致 assertNotEqual()
self.assertNotEqual(a, c)

注意事项:assertEqual 、assertNotEqual方法判断的是同类型的值

a = '1'
b = 1
# 判断内容与数据类型是否一致
self.assertEqual(a, b)

# 输出结果为:
    1 != 1
    Expected :1
    Actual   :1

 

assertTrue 和 assertFalse

'''
assertTrue(a) = 判断是否为True
            a == true  -->通过
            a != true  -->不通过
'''
self.assertTrue(1 == 1)
self.assertTrue(1 != 1)


'''
assertFalse(a) = 判断是否为false
            a == false  -->通过
            a != false  -->不通过
'''
self.assertFalse(1 != 1)
self.assertFalse(1 == 1)

 

assertIn 和 assertNotIn

'''
test_assertIn(,) = 判断一个值(admin)中是否含有 其中一个值(a)
assertNotIn(,) = 判断一个值(hello)中是否 不 含有其中一个值(h)
'''
self.assertIn("a", "admin")
self.assertNotIn('h', 'hello')

 

assertIsNone 和 assertIsNotNone

def Is_None():
    return None

def Is_NoNone():
    return 123

# 判断是否为空
c = Is_None()
self.assertIsNone(c)

# 判断是否不为空
x = Is_NoNone()
self.assertIsNotNone(x)

 

assertIsNot

# 判断两个值是否相同
a = '1' # str类型
b = 1   # int类型
self.assertIsNot(a, b)

注意事项:与assertEqual 、assertNotEqual不同的是这个方法可以判断的不是同类型的值

 

assertIsInstance 和 assertNotIsInstance

'''
assertIsInstance(a,b) = 判断a的数据类型是否为b

assertNotIsInstance(a,b) = 判断a的数据类型是否不为b
'''
a = 'hello'
self.assertIsInstance(a, str)
self.assertNotIsInstance(a, int)

 

其他方法

代码来源

assertAlmostEqual(a, b)     round(a-b, 7) == 0      
assertNotAlmostEqual(a, b)     round(a-b, 7) != 0      

# 版本:2.7
assertGreater(a, b)     a > b
assertGreaterEqual(a, b)     a >= b
assertLess(a, b)     a < b
assertLessEqual(a, b)     a <= b
assertRegexpMatches(s, re)     regex.search(s)
assertNotRegexpMatches(s, re)     not regex.search(s)
assertItemsEqual(a, b)     sorted(a) == sorted(b) and works with unhashable objs
assertDictContainsSubset(a, b)     all the key/value pairs in a exist in b
assertMultiLineEqual(a, b)     strings
assertSequenceEqual(a, b)     sequences
assertListEqual(a, b)     lists
assertTupleEqual(a, b)     tuples
assertSetEqual(a, b)     sets or frozensets
assertDictEqual(a, b)     dicts
assertMultiLineEqual(a, b)     strings
assertSequenceEqual(a, b)     sequences
assertListEqual(a, b)     lists
assertTupleEqual(a, b)     tuples 
assertSetEqual(a, b)     sets or frozensets     2.7assertDictEqual(a, b)     dicts

 

使用时机

那么我们什么时候应该使用断言呢?如果没有特别的目的,断言应该用于如下情况:

  • 防御性的编程
  • 运行时对程序逻辑的检测
  • 合约性检查(比如前置条件,后置条件)
  • 程序中的常量
  • 检查文档
  • 例:防御性编程中添加断言
    在代码开始添加注释是个好的开端,但是人们都不太喜欢读和更新这些注释,这些注释会很快变得过时。但对于断言,我们可以同时对这块代码编写文档,如果这些断言被违反了,会直接引起一个简单而又直接的失败。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值