• python unittest单元测试框架-1


    Test Case、Test Suite、Test Runner、Test Fixture

    • Test Case:单个测试用例
    • Test Suite:测试组合。可以把多个测试用例集合在一起执行。
    • Test Runner:通过Test Runner的run()方法来执行test suite/test case,可以使用图形界面、文本界面,或返回一个特殊的值来表示测试执行的结果。
    • Test Fixture:测试用例环境的搭建和销毁。如果测试用例中需要访问数据库,可以在setUp中建立数据库连接,在tearDown中清除数据库产生的数据,并断开连接

    1.单元测试

    calculator.py

    class Count:
        def __init__(self,a,b):
            self.a = a
            self.b = b
        def add(self):
            return self.a + self.b
        def sub(self):
            return self.a - self.b
    

    test.py

    from book.calculator import  Count
    import unittest
    class TestCount(unittest.TestCase):
        def setUp(self):
            print("test start")
        def test_add(self):
            j = Count(2,3)
            self.assertEqual(j.add(),5)
        def test_add2(self):
            j = Count(54,49)
            self.assertEqual(j.add(),103)
        def tearDown(self):
            print("test end")
    if __name__=="__main__":
        #__name__是内置属性,使用__main__就是直接使用。
        #main()方法可以将一个单元测试模块变成可以直接运行的测试脚本,执行所有以test命令开头的方法
        unittest.main()
    

    2.使用Test Suite组织测试用例,Test Runner运行

    2.1基于1中calculator.py执行测试集

    test.py

    from calculator import  Count
    import unittest
    class TestCount(unittest.TestCase):
        def setUp(self):
            print("test start")
        def test_add(self):
            j = Count(2,3)
            self.assertEqual(j.add(),5)
            print("test_add执行完毕")
        def test_add2(self):
            j = Count(54,49)
            self.assertEqual(j.add(),103)
            print("test_add2执行完毕")
        def tearDown(self):
            print("test end")
    if __name__=="__main__":
        #构造测试集
        suite = unittest.TestSuite()
        suite.addTest(TestCount("test_add2"))
        #执行测试集
        runner = unittest.TextTestRunner()
        runner.run(suite)
    
    ### 2.2编写新的计算类,并组织测试集 ### 2.3基于2.2,修改test.py,将测试加减的用例分离 ### 2.4基于2.2,如果每个类的初始化和回复一样,可以封装setUp和tearDown

    test.py

    from calculator import  Count
    import unittest
    class MyTest(unittest.TestCase):
        def setUp(self):
            print("test start")
        def tearDown(self):
            print("test end")
    class TestAdd(MyTest):
        def test_add(self):
            j = Count(2,3)
            self.assertEqual(j.add(),5)
            print("test_add执行完毕")
        def test_add2(self):
            j = Count(54,49)
            self.assertEqual(j.add(),103)
            print("test_add2执行完毕")
    
    class TestSub(MyTest):
        def test_sub(self):
            j = Count(4,1)
            self.assertEqual(j.sub(),3)
            print("test_sub执行完毕")
        def test_sub2(self):
            j = Count(5,9)
            self.assertEqual(j.sub(),-4)
            print("test_sub2执行完毕")
    
    if __name__=="__main__":
        #构造测试集
        suite = unittest.TestSuite()
        suite.addTest(TestAdd("test_add2"))
        suite.addTest(TestSub("test_sub2"))
        #执行测试
        runner = unittest.TextTestRunner()
        runner.run(suite)
    

    2.5基于2.3,修改test.py,将测试加减的用例分离到不同的脚本中

    calculator.py

    class Count:
        def __init__(self,a,b):
            self.a = int(a)
            self.b = int(b)
        def add(self):
            return self.a + self.b
        def sub(self):
            return self.a - self.b
    

    testadd.py

    from calculator import  Count
    import unittest
    class TestAdd(unittest.TestCase):
        def setUp(self):
            print("test add start")
        def test_add(self):
            j = Count(2,3)
            self.assertEqual(j.add(),5)
            print("test_add执行完毕")
        def test_add2(self):
            j = Count(54,49)
            self.assertEqual(j.add(),103)
            print("test_add2执行完毕")
        def tearDown(self):
            print("test add end")
    if __name__=="__main__":
        unittest.main()
    

    testsub.py

    from calculator import Count
    import unittest
    class TestSub(unittest.TestCase):
        def setUp(self):
            print("test sub start")
        def test_sub(self):
            j = Count(4,1)
            self.assertEqual(j.sub(),3)
            print("test_sub执行完毕")
        def test_sub2(self):
            j = Count(5,9)
            self.assertEqual(j.sub(),-4)
            print("test_sub2执行完毕")
        def tearDown(self):
            print("test sub end")
    if __name__=="__main__":
        unittest.main()
    

    runtest.py

    import unittest
    from testadd import TestAdd
    from testsub import TestSub
    suite = unittest.TestSuite()
    suite.addTest(TestAdd("test_add"))
    suite.addTest(TestAdd("test_add2"))
    suite.addTest(TestSub("test_sub"))
    suite.addTest(TestSub("test_sub2"))
    if __name__=="__main__":
        runner = unittest.TextTestRunner()
        runner.run(suite)
    
  • 相关阅读:
    7.1MongoDB之索引
    7.1MongoDB之排序
    6.30MongoDB之Limit与Skip方法
    6.30Java连接MongoDB进行操作练习
    6.30MongoDB之$type操作符
    6.30MongoDB之条件操作符
    6.30MongoDB之"查"
    6.29MongoDB之"改"
    c# 调用jar包
    sql server SQL 调试:无法启动 T-SQL 调试。未能附加到 SQL Server 进程
  • 原文地址:https://www.cnblogs.com/csj2018/p/10023320.html
Copyright © 2020-2023  润新知