测试用例执行方式

执行方式一(执行所有的测试用例)

1.执行main()方法执行的特点:unittest.main()
    注意:
    1.是把所有的测试用例执行了一遍
    2.执行测试用例的顺序控制不了,(按照测试用例名(方法名)的字母顺序执行的)

执行方式二(内部方法添加测试用例)(重点)

通过内部函数添加测试用例
步骤:
1.生成测试套件(也叫测试集合)
    suitt = unittest.TestSuite()
2.把测试用例添加进测试集合,两种方式添加
    1.suitt.addTest(类名("用例"))
    2.suitt.addTests(map(类名,["用例1","用例2",...]))
3.生成测试结果对象,然后传递到run函数中
    re = unittest.TestResult()
    suitt.run(re)
    
#!/usr/bin/env python
# -*- coding:utf-8 -*-  
#====#====#====#====   
#Author:
#CreatDate:
#Version: 
#====#====#====#====

import unittest

class Maker(unittest.TestCase):
    def test_01(self):
        print("test_01......")

    def test_02(self):
        print("test_02......")

    def test_03(self):
        print("test_03......")

    def test_04(self):
        print("test_04......")

    def test_05(self):
        print("test_05......")

if __name__=='__main__':
    # 1.
    # 生成测试套件(也叫测试集合)
    suitt = unittest.TestSuite()
    # 2.
    # 把测试用例添加进测试集合, 两种方式添加
    # 1.
    # suitt.addTest(Maker("test_03"))
    # 2.
    suitt.addTests(map(Maker, ["test_01", "test_03","test_05"]))
    # 3.
    # 生成测试结果对象, 然后传递到run函数中
    re = unittest.TestResult()
    suitt.run(re)
#需要使用python中的IDLE执行,或直接终端执行这个文件

执行方式三(通过模块方法添加测试用例)(重点)

通过模块方法添加测试用例
1.如果测试用例的数量比较大,使用testsuite自带的方法加用例到集合,很麻烦
可以unittest中提供的testloader模块,提供了好多帮我们把测试用例加载到测试集合中的方法
2.步骤:
    2.创建testloader的对象
    3.使用testloader的对象中的loadTestsFromName函数添加测试用例,这个api,返回测试套件
        1.可以添加整个模块的测试用例
        2.也可以添加一个单元测试类中的所有测试用例(只能添加一个单元测试类)
        3.也可以添加单元测试类中的某个测试用例(只能添加一个单元测试类中的一个测试用例)

    4.生成测试结果对象,然后传递到run函数中
        re = unittest.TestResult()
        suitt.run(re)
        
        
模块代码:
#!/usr/bin/env python
# -*- coding:utf-8 -*-  
#====#====#====#====   
#Author:
#CreatDate:
#Version: 
#====#====#====#====

import unittest

class Maker(unittest.TestCase):
    def test_01(self):
        print("test_01......")

    def test_02(self):
        print("test_02......")

    def test_03(self):
        print("test_03......")

    def test_04(self):
        print("test_04......")

    def test_05(self):
        print("test_05......")


class Maker2(unittest.TestCase):
    def test_01(self):
        print("test_01...Maker2...")

    def test_02(self):
        print("test_02....Maker2..")

    def test_03(self):
        print("test_03...Maker2...")

    def test_04(self):
        print("test_04...Maker2...")

    def test_05(self):
        print("test_05...Maker2...")
        
业务代码:
#!/usr/bin/env python
# -*- coding:utf-8 -*-  
#====#====#====#====   
#Author:
#CreatDate:
#Version: 
#====#====#====#====
import unittest
if __name__=='__main__':
    #创建loader对象
    loader=unittest.TestLoader()
    #参数为模块名,返回测试套件,执行一个模块中所有的用例
    suit=loader.loadTestsFromName("Maker2Tests")
    #执行一个模块中的某个单元测试类中的所有用例
    # suit=loader.loadTestsFromName("Maker2Tests.Maker")
    #执行一个模块中的某个单元测试类中的某个用例
    suit=loader.loadTestsFromName("Maker2Tests.Maker.test_05")

    # 生成测试结果对象, 然后传递到run函数中
    re = unittest.TestResult()
    suit.run(re)

执行方式四(通过路径方式添加测试用例)(重点)

使用unittest.defaultTestLoader对象的discover方法加载用例,可以将指定路径所有符合匹配规则(pattern)的文件中的单元测试用例一次性加载
第一个参数是一个目录,这个目录下可以有单元测试用例的文件(.py)
第二个参数是填文件名,可以通配
 suitt = unittest.defaultTestLoader.discover(r"./Maker/", pattern="unit*.py")
说明: 
    1."unit*.py指的是以unit开头,以.py结尾的文件
    2..py中的单元测试用例要使用unittest框架写的测试用例
    3.注意模块名不要用中文命名

步骤:
    1.生成测试套件(也叫测试集合)
    2.使用discover方法批量添加
    3.生成测试结果对象,然后传递到run函数中
        re = unittest.TestResult()
        suitt.run(re)

#!/usr/bin/env python
# -*- coding:utf-8 -*-  
#====#====#====#====   
#Author:
#CreatDate:
#Version: 
#====#====#====#====

import unittest

if __name__=='__main__':
    suit=unittest.defaultTestLoader.discover(r'./MyTestFile/',pattern="unit*.py")
    print(suit.countTestCases())
    # 生成测试结果对象, 然后传递到run函数中
    re = unittest.TestResult()
    suit.run(re)


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渊途

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值