sunshine
管理员
管理员
  • 最后登录2023-10-30
  • 发帖数170
  • 社区居民
阅读:7359回复:0

python 基础 学习系列7 — unittest 单元测试

楼主#
更多 发布于:2018-01-23 17:17
述 (unittest使用方法讲解:http://www.jb51.net/article/63955.htm)
1.测试脚手架(test fixture)
测试准备前要做的工作和测试执行完后要做的工作.包括setUp()和tearDown().
2.测试案例(test case)
最小的测试单元.
3.测试套件(test suite)
测试案例的集合.
4.测试运行器(test runner)
测试执行的组件.
======================================================
unittest 常用方法:
http://blog.csdn.net/guangyinglanshan/article/details/78264981
https://www.jianshu.com/p/d52c20cd7021 代码注释说明各种方法(setup , tearDown)
====================================================================
python_unittest详解(原理等)
====================================================================
单元测试的几种方式


1.使用 unittest.main() 执行测试

# 导入unittest 模块
import unittest
import demo1
class TestCase150(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print('set up class')
    @classmethod
    def tearDownClass(cls):
        print('tear down class')
    # 每一个测试方法执行前,都会执行
    def setUp(self):
        print('test fun 执行')
        self.calc = demo1.calc()
    def tearDown(self):
        print('test fun 结束')
    def testadd(self):
        self.assertEqual(self.calc.add(1,2),3,'add is fail')
    def testsub(self):
        self.assertEqual(self.calc.sub(2,1),1,'sub is fail')
    def testpow(self):
        pass
if __name__=="__main__":
    unittest.main()

2. 使用suite 套件,且使用TextTestRunner 进行运行

import unittest
# TextTestRunner
class UCTestCase(unittest.TestCase):
    def setUp(self):
        pass
    def tearDown(self):
        pass
    def testAdd(self):
        print('add')
    def testSub(self):
        print('sub')

if __name__=="__main__":
    # 测试集
    suite = unittest.TestSuite()
    suite.addTest(UCTestCase('testAdd'))
    suite.addTest(UCTestCase('testSub'))
    # 执行测试
    runner = unittest.TextTestRunner()
    runner.run(suite)

3. 当要执行多个测试类,使用TestLoader下的loadTestsFromTestCase. 代码如下:
import unittest
class TestCaseClass1(unittest.TestCase):
    def setUp(self):
        pass
    def tearDown(self):
        pass
    def testCase1(self):
        print('class 1 test case 1')
    def testCase2(self):
        print('class 1 test case 2')

class TestCaseClass2(unittest.TestCase):
    def setUp(self):
        pass
    def tearDown(self):
        pass
    def testCase1(self):
        print('class 2 test case 1')
    def testCase2(self):
        print('class 2 test case 2')

if __name__ == "__main__":
    # 如何同时测试多个类
    suite1 = unittest.TestLoader().loadTestsFromTestCase(TestCaseClass1)
    suite2 = unittest.TestLoader().loadTestsFromTestCase(TestCaseClass2)
    suite = unittest.TestSuite([suite1,suite2])
    unittest.TextTestRunner(verbosity=2).run(suite)
游客


返回顶部

公众号

公众号