unittest测试框架基础用法

"""
UnitTest是python自带的单元测试框架
TestCase测试用例
TestSuite测试套件,可以把多个TestCase集成到一个TestSuite中
TestRunner执行测试用例
TestLoader自动从代码中加载多个测试用例TestCase
Fixure是UnitTest的特性

"""

# ************************************************************************
# testCase
# 案例:定义一个实现加法操作函数,并测试
# 定义函数
"""
步骤:
1.导入unittest模块
2.实现一个类,必须继承unittest.TestCase类
3.类中的每个方法为一个测试用例必须以test开头
4.在类的外面,函数外面运行

"""
# 新建py文件testcase_01
import unittest
def my_sum(a,b):
    return a + b
# 定义类
class my_test(unittest.TestCase):
    # 编写第一个测试用例,测试用例必须以test开头
    def test_01(self):
        print(my_sum(4,8))
    # 编写第二个测试用例
    def test_02(self):
        print(my_sum(24,523))
# unittest会自动执行代码

# ************************************************************************
# TestSuite 把多个测试用例整合成一个测试套件
"""
使用方法
1.实例化unittest.testsuite方法  如suite1 = unittest.TestSuite()
2.调用addTest()方法添加测试用例 suite1.addTest(classname(“方法名”))
"""
import unittest # 导入unittest
import testcase_01 # 导入测试用例py文件,导入的py文件名格式与变量一致
# 实例化unittest.TestSuite
suite = unittest.TestSuite()
# 添加testcase_01中的测试用例
suite.addTest(testcase_01.my_test('test_01'))
suite.addTest(testcase_01.my_test('test_02'))
# 截止到现在执行后无结果,上面仅仅将测试用例添加到测试套件中,不能执行测试用例
# suite.addTest(unittest.makeSuite(类名))一次性添加类里面的所有测试用例到套件中
# 效果同上
suite.addTest(unittest.makeSuite(testcase_01.my_test))

# ************************************************************************
# TextTestRunner执行测试套件中的测试用例
"""
使用方法
1.实例化TextTestRunner方法  如runner = unittest.TextTestRunner()
2.调用run()方法,并将要执行的套件设为参数即可
"""
runner = unittest.TextTestRunner() # 实例化TextTestRunner对象
runner.run(suite) #调用对象的run方法执行suite套件中的测试用例

# ************************************************************************
# TestLoader通过discover()方法自动搜索指定开头的py文件,并可以将查到的测试用例组装到测试套件中
"""
使用方法
1.suite1 = unittest.TestLoader().discover(test_dir,pattern='test*.py')
2.调用run()方法,并将要执行的套件设为参数即可
"""
# 提前新建一个名字为my开头的测试用例文件
# 用discover方法按参数条件查询文件,并将查询到的问题件放在suite中
suite1 = unittest.TestLoader().discover("./","my*.py") # "./"意思为在当前目录中寻找文件,"my*.py"代表以my开头的py文件,*为通配符
# 执行调用
run = unittest.TextTestRunner()
run.run(suite1)

# ************************************************************************
# Fixture在测试用例执行之前和之后自动调用指定的函数
# 可以控制每个方法、类、模块的执行前后的调用
"""
方法级控制
初始化-前置处理: def setUp(self)
销毁-后置处理:def tearDown(self)
每个方法执行的时候前后置方法都会被执行一次
"""
def my_sum(a,b):
    return a + b
# 定义类
class my_test(unittest.TestCase):
    # 初始化处理setup
    def setUp(self):
        print('setup被执行了')
    # 销毁后置处理tearDown
    def tearDown(self):
        print('tearDown被执行了')
    def test_01(self):
        print(my_sum(4,8))
    # 编写第二个测试用例
    def test_02(self):
        print(my_sum(24,523))

"""
类级控制,为类方法,前面必须加上@classmethod
初始化-前置处理: @classmethod def setUpClass(cls)
销毁-后置处理:@classmethod def tearDownClass(cls)
类执行的时候前后置方法会各执行一次
"""
def my_sum(a,b):
    return a + b
# 定义类
class my_test(unittest.TestCase):
    @classmethod
    # 类控制初始化调用函数,类开始执行时调用
    def setUpClass(cls):
        print('setupclass被执行了')
    @classmethod
    # 类控制销毁调用函数,类执行结束时调用
    def tearDownClass(cls):
        print('tearDownclass被执行了')
    # 初始化处理setup
    def setUp(self):
        print('setup被执行了')
    # 销毁后置处理tearDown
    def tearDown(self):
        print('tearDown被执行了')
    def test_01(self):
        print(my_sum(4,8))
    # 编写第二个测试用例
    def test_02(self):
        print(my_sum(24,523))

"""
模块级控制
初始化-前置处理: def setUpModule()
销毁-后置处理:def tearDownModule()
一个py文件执行一次,写在import后
"""

def setUpModule():
    print('setupModule被执行了')
def tearDownModule():
    print('tearDownModule被执行了')

def my_sum(a,b):
    return a + b
# 定义类
class my_test(unittest.TestCase):
    @classmethod
    # 类控制初始化调用函数,类开始执行时调用
    def setUpClass(cls):
        print('setupclass被执行了')
    @classmethod
    # 类控制销毁调用函数,类执行结束时调用
    def tearDownClass(cls):
        print('tearDownclass被执行了')
    # 初始化处理setup
    def setUp(self):
        print('setup被执行了')
    # 销毁后置处理tearDown
    def tearDown(self):
        print('tearDown被执行了')
    def test_01(self):
        print(my_sum(4,8))
    # 编写第二个测试用例
    def test_02(self):
        print(my_sum(24,523))

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值