• 单元测试


     首先写了一个计算类(只写了加方法):

    # 类名继承object
    class Count(object):
        # 初始化变量(属性)值,此时在声明对象的时候需要传入初始值a和b
        def __init__(self, a, b):
            self.a = int(a)
            self.b = int(b)
    
        # 定义一个加方法,实现返回a+b
        def add(self):
            return self.a + self.b

    然后写一个简单的加法计算单元测试:

    # 从calculate.py中导入Count类
    from calculate import Count
    # 导入unittest单元测试类
    import unittest
    
    # 创建测试类u_test继承至unittest.TestCase
    class u_test(unittest.TestCase):
        # setUp可以理解为测试初始化,一般用于测试前的准备工作
        def setUp(self):
            print('Test begin ')
    
        # 构造测试方法test_add
        def test_add(self):
            # 声明一个对象j,传入属性值4,3
            j = Count(4, 3)
    
            # 调用unittest.TestCase类的数值判断方法assertEqual
            self.assertEqual(j.add(), 9)
    
        # setUp可以理解为测试后处理,一般用于测试后的处理工作
        def tearDown(self):
            print('Test complete')
    
    ''' .py文件可导入使用,也可以单独执行。加入此判断的目的是为了让解释器知道我执行的是utest.py'''
    if __name__ == '__main__':
        unittest.main()

    下附文件目录:

                                 

    传入3,4的运行结果:

     传入4,5的测试结果:

    上述代码只是实现了一个case的执行,并不能执行多个case。所以引入TestSuite,通过unittest.TestSuite类的addCase()方法增加测试用例,通过unittest下的TextTestRunner类的run()方法来执行suite。

    下面尝试执行有选择的执行Case:

    calculate.py不做更改;unitest.py最后的调用作更改:

    from calculate import Count
    import unittest
    
    class u_test(unittest.TestCase):
        def setUp(self):
            print('Test begin ')
    
        def test_add(self):
            j = Count(4, 5)
            self.assertEqual(j.add(), 9)
    
        def test_add2(self):
            j = Count(8, 5)
            self.assertEqual(j.add(), 12)
    
        def tearDown(self):
            print('Test complete')
    
    
    if __name__ == '__main__':
        # 声明unittest.TestSuite类的对象suite
        suite = unittest.TestSuite()
        # 调用上述类的addTest方法来增加要执行的Case
        suite.addTest(u_test.test_add2())
    
        # 创建unittest.TextTestRunner类的runner对象
        runner = unittest.TextTestRunner()
        runner.run(suite)

     执行结果:

  • 相关阅读:
    简单工厂模式、工厂模式、抽象工厂模式
    直接插入排序
    简单选择排序的陷阱
    面试3 题目二,不修改数组找到重复的数字
    二进制中1的个数(读不懂题目怎么办)
    用两个栈实现队列
    斐波那契数列
    替换空格
    python 实现杨辉三角(依旧遗留问题)
    递归实现二分查找
  • 原文地址:https://www.cnblogs.com/wjlv/p/10603222.html
Copyright © 2020-2023  润新知