单元测试

单元测试

unittest

unittest用例编写——TestCase

  • 用例文件创建
  • 用例类定义
  • 用例方法定义

# setUpClass是类级别的,它们会在所有测试用例执行前执行一次,并且只执行一次。
# tearDownClass方法是类级别的,它们会在所有测试用例执行后执行一次,并且只执行一次。
import unittest


class TestDemo(unittest.TestCase):
    def test_case1(self):
       print("这是测试用例")
    def test_case2(self):
        print("test case 2")
    def setUp(self):
        print("----用例执行的前置方法---setUp")
    def tearDown(self):
        print("----用例级别的后置方法---tearDown")



# 类方法区别与实例方法需要@声明且参数是cls
    @classmethod
    def setUpClass(cls):
        print("----测试类级别的前置方法---")
    @classmethod
    def tearDownClass(cls):
        print("----测试类级别的后置方法---")    
if __name__ == '__main__':
    unittest.main()

unittest用例收集——TestSuite

  • 测试套件
  • 用例加载器
  • 加载用例的方式

import unittest

# 创建一个测试套件
suite = unittest.TestSuite()

# 创建一个用例加载器
loader = unittest.TestLoader()

# 将用例加载到测试套件中
# 通过类名进行加载
suite.addTest(loader.loadTestsFromTestCase(TestDemo))
# 通过用例模块进行加载
suite.addTest(loader.loadTestsFromModule(test_demo))

# 通过用例文件所在路径进行加载
suite.addTest(loader.discover('./', pattern='test*.py'))


# 获取套件中的用例数量
print('套件中的用例数量:',suite.countTestCases())

unittest用例执行——TestRunner

# 用例运行

import unittest
# 创建一个测试套件
suite = unittest.TestSuite()
# 创建一个用例加载器
loader = unittest.TestLoader()
# 通过文件所在路径进行加载用例
suite.addTest(loader.discover('./', pattern='test*.py'))
# 获取套件中的用例数量
print('套件中的用例数量:',suite.countTestCases())
# 运行用例,记住TestRunner不能直接运行,unittest自身只能实现txt的报告
with open('./report.txt', 'w', encoding='utf-8') as f:
    runner = unittest.TextTestRunner(stream=f,verbosity=2)
    runner.run(suite)


unittest用例加载&执行扩展

import unittest

# 加载测试用例到测试套件中
suite = unittest.defaultTestLoader.discover(start_dir='./',pattern='test*.py')

# 获取套件中的用例数量
print('套件中的用例数量:',suite.countTestCases())

# 运行用例
with open('./report.txt', 'w', encoding='utf-8') as f:
    runner = unittest.TextTestRunner(stream=f,verbosity=2)
    runner.run(suite)