zoukankan      html  css  js  c++  java
  • 【Python】unittest-2-断言

    Unittest中的断言

    1、  python unintest单元测试框架提供了一整套内置的断言方法。

    (1)如果断言失败,则抛出一个AssertionError,并标识该测试为失败状态

    (2)如果异常,则当做错误来处理 注意:以上两种方式的区别

    (3)如果成功,则标识该测试为成功状态

    一、基本断言

    1、  基本的断言方法提供了测试结果是True还是False。所有的断言方法都有一个msg参数,如果指定msg参数的值,则将该信息作为失败的错误信息返回

    序号

    断言方法

    断言描述

    1

    assertEqual(arg1, arg2, msg=None)

    验证arg1=arg2,不等则fail

    2

    assertNotEqual(arg1, arg2, msg=None)

    验证arg1 != arg2, 相等则fail

    3

    assertTrue(expr, msg=None)

    验证expr是true,如果为false,则fail

    4

    assertFalse(expr,msg=None)

    验证expr是false,如果为true,则fail

    5

    assertIs(arg1, arg2, msg=None)

    验证arg1、arg2是同一个对象,不是则fail

    6

    assertIsNot(arg1, arg2, msg=None)

    验证arg1、arg2不是同一个对象,是则fail

    7

    assertIsNone(expr, msg=None)

    验证expr是None,不是则fail

    8

    assertIsNotNone(expr, msg=None)

    验证expr不是None,是则fail

    9

    assertIn(arg1, arg2, msg=None)

    验证arg1是arg2的子串,不是则fail

    10

    assertNotIn(arg1, arg2, msg=None)

    验证arg1不是arg2的子串,是则fail

    11

    assertIsInstance(obj, cls, msg=None)

    验证obj是cls的实例,不是则fail

    12

    assertNotIsInstance(obj, cls, msg=None)

    验证obj不是cls的实例,是则fail

    二、比较断言

    1、    assertAlmostEqual (first, second, places = 7, msg = None, delta = None)

    验证first约等于second。 palces: 指定精确到小数点后多少位,默认为7

    2、    assertNotAlmostEqual (first, second, places, msg, delta)

    验证first不约等于second。 palces: 指定精确到小数点后多少位,默认为7

    注: 在上述的两个函数中,如果delta指定了值,则first和second之间的差值必须≤delta

    3、    assertGreater (first, second, msg = None)

    验证first > second,否则fail

    4、    assertGreaterEqual (first, second, msg = None)

    验证first ≥ second,否则fail

    5、    assertLess (first, second, msg = None)

    验证first < second,否则fail

    6、    assertLessEqual (first, second, msg = None)

    验证first ≤ second,否则fail

    7、    assertRegexpMatches (text, regexp, msg = None)

    验证正则表达式regexp搜索匹配的文本text。 regexp:通常使用re.search()

    8、    assertNotRegexpMatches (text, regexp, msg = None)

    验证正则表达式regexp搜索不匹配的文本text。 regexp:通常使用re.search()

    三、复杂断言

    1、  unittest框架提供的第三种断言类型,可以处理元组、列表、字典等更复杂的数据类型。

    序号

    断言方法

    断言描述

    1

    assertListEqual (list1, list2, msg = None)

    验证列表list1、list2相等,不等则fail,同时报错信息返回具体的不同的地方

    2

    assertTupleEqual (tuple1, tuple2, msg = None)

    验证元组tuple1、tuple2相等,不等则fail,同时报错信息返回具体的不同的地方

    3

    assertSetEqual (set1, set2, msg = None)

    验证集合set1、set2相等,不等则fail,同时报错信息返回具体的不同的地方

    4

    assertDictEqual (expected, actual, msg = None)

    验证字典expected、actual相等,不等则fail,同时报错信息返回具体的不同的地方

    #练习:
    import unittest
    import random
    class TestSequenceFunctions(unittest.TestCase):
        def setUp(self):
            # 初始化一个递增序列
            self.seq = range(10)
            print "setup completed!"
    
        def test_run(self):
            # 从序列seq中随机选取一个元素
            element = random.choice(self.seq)
            # 验证随机元素确实属于列表中
            self.assertTrue(element in self.seq)
            
        def test_sth(self):
            assert 1==1
            
        def tearDown(self):
            print "tearDown completed"
            
    class TestDictValueFormatFunctions(unittest.TestCase):
        def setUp(self):
            self.seq = range(10)
    
        def test_shuffle(self):
            # 随机打乱原seq的顺序
            random.shuffle(self.seq)
            self.seq.sort()
            self.assertEqual(self.seq, range(10))
            # 验证执行函数时抛出了TypeError异常
            self.assertRaises(TypeError, random.shuffle, (1, 2, 3))
    
    if __name__ == '__main__':
        unittest.main()
     1 #练习2:
     2 import unittest
     3 from Calc import Calc
     4 
     5 class MyTest(unittest.TestCase):
     6 
     7     @classmethod
     8     def setUpClass(self):
     9         print u"单元测试前,创建Calc类的实例"
    10         self.c = Calc()
    11 
    12     # 具体的测试用例,一定要以test开头,执行顺序按照字母顺序开头
    13     def test_0add(self):
    14         print "run add()"
    15         self.assertEqual(self.c.add(1, 2, 12), 15, 'test add fail')
    16 
    17     def test_1sub(self):
    18         print "run sub()"
    19         self.assertEqual(self.c.sub(2, 1, 3), -2, 'test sub fail')
    20 
    21     def test_2mul(self):
    22         print "run mul()"
    23         self.assertEqual(Calc.mul(2, 3, 5), 30, 'test mul fail')
    24 
    25     def test_3div(self):
    26         print "run div()"
    27         self.assertEqual(Calc.div(8, 2, 4), 1, 'test div fail')
    28 
    29 
    30 if __name__ == '__main__':
    31     unittest.main()# 启动单元测试
  • 相关阅读:
    布隆过滤器
    django-redis 和 vue 实现的购物车
    富文本编辑器
    django 和 七牛云 交互
    django 提供的加密算法
    DRF mixins 的常用方法
    Python笔记5(作业)
    Python笔记5(random&sys&os模块)
    Python笔记5(collections模块)
    Python笔记5(时间模块)
  • 原文地址:https://www.cnblogs.com/jingsheng99/p/9098254.html
Copyright © 2011-2022 走看看