ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python-unittest模块-测试套件和执行器

2021-12-01 23:02:19  阅读:171  来源: 互联网

标签:执行器 模块 python unittest 测试 import test suite


一、简介:

suite  测试套件: 相当于测试用例的集合

runner 执行器:相当于 测试执行器,用于去执行测试用例(套件)

 

二、直接上例子

1、执行某个测试类的普通用法

在一个模块中,在主函数 中直接执行执行,执行的是这个测试类下面的所有测试方法

import unittest

# 测试类继承unittest.TestCase
class MytestCase1(unittest.TestCase):

    # 测试方法,以test开头
    def test_1(self):
        print('test1-1')
        b = 0
        self.assertTrue(b)
  
    def test_2(self):
        print('test1-2')
        b = 1
        self.assertTrue(b)
  

if __name__ == '__main__':
    unittest.main()

 

2、执行测试类方法除了上面 通过主函数去执行,还可以通过,suite 套件去执行,

测试类1: demo1.py

import unittest

# 测试类继承unittest.TestCase

class MytestCase1(unittest.TestCase):

    
    def test_1(self):
        print('test1-1')
        b = 0
        self.assertTrue(b)

    def test_2(self):
        print('test1-2')
        b = 1
        self.assertTrue(b)

测试类2 demo2.py

import unittest

# 测试类继承unittest.TestCase

class MytestCase2(unittest.TestCase):

    def test_1(self):
        print('test2-1')
        b = 1
        self.assertTrue(b)

    def test_2(self):
        print('test2-2')
        b = 0
        self.assertTrue(b)

    def test_3(self):
        print('test2-3')
        b = 1
        self.assertTrue(b)

    def test_4(self):
        print('test2-4')
        b = 0
        self.assertTrue(b)

 

通过测试套件 指定执行某个测试类下的某一个测试方法(一次添加一个):

suit_demo1.py

# '''
# 通过测试套件suite 的方式指定 具体执行哪些类方法
# 注意测试套件必须,必须编写在单独的某块中,通过在这个模块中导入测试类和测试方法,再去执行
# '''
import unittest
from demo1 import MytestCase1
from demo2 import MytestCase2

# 实例化测试套件
suite = unittest.TestSuite()


# 指定执行某个模块中的测试方法,单个单个添加
suite.addTest(MytestCase1('test_1'))
suite.addTest(MytestCase2('test_1'))
suite.addTest(MytestCase2('test_2'))


# 实例化执行器
runner = unittest.TextTestRunner()
runner.run(suite)

 

通过测试套件 指定执行某个测试类下的某些2测试方法(一次添加多个):

suit_demo2.py

'''
将用例定义成一个 list传入测试套件去执行
注意:
list tuple 是有序的
set dict 是无序的
'''
import unittest
from demo1 import MytestCase1
from demo2 import MytestCase2

# 实例化测试套件
suite = unittest.TestSuite()

''' 测试类的测试方法作为参数'''
# 指定执行某个模块中的测试方法,addTests 添加多个
suite.addTests([MytestCase1('test_1'),MytestCase1('test_2'),MytestCase2('test_3'),MytestCase2('test_4')])

# 实例化执行器
runner = unittest.TextTestRunner()
runner.run(suite)

简化代码,将测试方法封装到一个变量中,便于阅读:

'''
将用例定义成一个 list变量 传入测试套件去执行
注意:
list tuple 是有序的
set dict 是无序的
'''
import unittest
from demo1 import MytestCase1
from demo2 import MytestCase2

# 实例化测试套件
suite = unittest.TestSuite()

# 将用例定义 成一个list变量,使代码更加清晰
# 在python 中 list 和tuple 是有序的,
# case = [
#         MytestCase1('test_1'),
#          MytestCase1('test_2'),
#          MytestCase2('test_3'),
#          MytestCase2('test_4')
#         ]


# 在python 中 集合 和dict 是无序的 
case1 = {
        MytestCase1('test_1'),
         MytestCase1('test_2'),
         MytestCase2('test_3'),
         MytestCase2('test_4')
        }


# 指定执行某个模块中的测试方法,addTests 添加多个
suite.addTests(case1)


# 实例化执行器
runner = unittest.TextTestRunner()
runner.run(suite)

 

执行某个测试类下的所有测试方法  装载器--loadTestsFromTestCase

'''
使用装载器,指定执行某个测试类下的所有测试方法
'''
import unittest
from demo1 import MytestCase1
from demo2 import MytestCase2

# 实例化测试套件
suite = unittest.TestSuite()

'''通过装载器 ,类名作为参数,执行这个测试类的所有测试方法 '''
# 传入某个模块中的测试类,执行这个测试类的所有类方法
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(MytestCase1))

# 实例化执行器
runner = unittest.TextTestRunner()
runner.run(suite)

 

执行某个测试模块下的某个测试类方法 装载器 --loadTestsFromName()   --loadTestsFromName()

'''
使用装载器,指定执行某个模块下的测试类的测试方法
'''
import unittest
from unittestsuite_demo.demo1 import MytestCase1
from unittestsuite_demo.demo2 import MytestCase2

# 实例化测试套件
suite = unittest.TestSuite()

# 传入模块.类名,执行这个测试类的所有类方法-单数
suite.addTests(unittest.TestLoader().loadTestsFromName('demo2.MytestCase2'))

# 传入模块.类名,执行这个测试类的所有类方法-复数
suite.addTests(unittest.TestLoader().loadTestsFromNames(['demo2.MytestCase2','demo1.MytestCase1']))



# 实例化执行器
runner = unittest.TextTestRunner()
runner.run(suite)

 

执行某个模块下的所有测试类方法  装载器--loadTestsFromModule()

'''
使用装载器,指定执行某个模块下的所有测试类方法'''
import unittest
import demo1

# 实例化测试套件
suite = unittest.TestSuite()

'''通过装载器 ,模块作为参数,执行这个模块下的所有测试类方法 '''
#传入模块,直接执行这个模块下的所有测试类的测试方法
suite.addTests(unittest.TestLoader().loadTestsFromModule(demo1))

# 实例化执行器
runner = unittest.TextTestRunner()
runner.run(suite)

 

执行指定目录下 去执行某些模块         (注意模块名字命名符合一定的规则)

'''
通过装载器指定执行某个文件夹下的所有模块(.py文件)
'''
import unittest,os

# 定义当前模块所在目录,用于后面从当前模块所处目录下去查找模块
# module_path = os.getcwd()
module_path='./'

discover= unittest.defaultTestLoader.discover(start_dir=module_path,pattern='demo*.py')

# 实例化执行器
runner = unittest.TextTestRunner()
runner.run(discover)

 

标签:执行器,模块,python,unittest,测试,import,test,suite
来源: https://www.cnblogs.com/byhh/p/15631203.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有