单元测试

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

# 类名继承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)

 执行结果:

原文地址:https://www.cnblogs.com/wjlv/p/10603222.html