测试框架-unittest-测试套件实例

2022-07-25 15:54:01 浏览数 (1)

测试套件实例

目录

  • 方式一:addTest/addTests/addTests TestLoader
    • 一、用addTest方法
    • 二、用addTests方法
    • 三、用addTests方法 TestLoader方法
  • 方式二:定义函数(addTest方式添加用例)
  • 方式三:定义函数(map方式添加用例)
  • 方式四:嵌套测试套件
  • 方式五:TestLoader生成默认的测试套件

如图所示:测试套件实例项目目录结构:

1、创建test_case包(用来存放测试用例)。

2、在test_case包下,创建test_Demo1.py文件。

脚本代码:

代码语言:javascript复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
"""
测试用例1
"""
class TestDemo1(unittest.TestCase):
    def setUp(self):
        print('setUp')

    def test_case1(self):
        print('test_case1')

    def tearDown(self):
        print('tearDown')

3、在test_case包下,创建test_Demo2.py文件。

脚本代码:

代码语言:javascript复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
"""
测试用例2
"""
class TestDemo2(unittest.TestCase):
    def setUp(self):
        print('setUp')

    def test_case2(self):
        print('test_case2')

    def tearDown(self):
        print('tearDown')

方式一:

addTest/addTests/addTests TestLoader

创建runtest1.py文件。

一、用addTest方法

1、脚本代码:

代码语言:javascript复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
from test_case import test_Demo1
from test_case import test_Demo2
"""
测试套件实例:方式一:addTest/addTests/addTests TestLoader
"""
# 用addTest方法
suite = unittest.TestSuite()
suite.addTest(test_Demo1.TestDemo1('test_case1'))
suite.addTest(test_Demo2.TestDemo2('test_case2'))

if __name__=='__main__':
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(suite)

2、执行runtest1.py文件,运行结果:

执行test_Demo1模块里的TestDemo1类里的test_case1方法;

执行test_Demo2模块里的TestDemo2类里的test_case2方法。

二、用addTests方法

1、脚本代码:

代码语言:javascript复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
from test_case import test_Demo1
from test_case import test_Demo2
"""
测试套件实例:方式一:addTest/addTests/addTests TestLoader
"""
# 用addTests方法
suite = unittest.TestSuite()
tests = [test_Demo1.TestDemo1('test_case1'), test_Demo2.TestDemo2('test_case2')]
suite.addTests(tests)

if __name__=='__main__':
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(suite)

2、执行runtest1.py文件,运行结果:

执行test_Demo1模块里的TestDemo1类里的test_case1方法;

执行test_Demo2模块里的TestDemo2类里的test_case2方法。

三、用addTests方法 TestLoader方法

(loadTestsFromName/loadTestsFromNames/loadTestsFromTestCase/loadTestsFromModule/discover)。

1、脚本代码:

代码语言:javascript复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
from test_case import test_Demo1
from test_case import test_Demo2
"""
测试套件实例:方式一:addTest/addTests/addTests TestLoader
"""
# 用addTests方法   TestLoader方法(loadTestsFromName/loadTestsFromNames/loadTestsFromTestCase/loadTestsFromModule/discover)
suite = unittest.TestSuite()
suite.addTests(unittest.TestLoader().loadTestsFromName('test_case.test_Demo1.TestDemo1.test_case1'))
suite.addTests(unittest.TestLoader().loadTestsFromNames(['test_case.test_Demo1.TestDemo1.test_case1','test_case.test_Demo2.TestDemo2.test_case2']))
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(test_Demo1.TestDemo1))
suite.addTests(unittest.TestLoader().loadTestsFromModule(test_Demo1))
suite.addTests(unittest.TestLoader().discover(start_dir='./', pattern='test*2.py'))

if __name__=='__main__':
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(suite)

2、执行runtest1.py文件,运行结果:

代码语言:javascript复制
(1)加载test_case包里的test_Demo1模块里的TestDemo1类里的test_case1方法。
TestLoader().loadTestsFromName('test_case.test_Demo1.TestDemo1.test_case1')
(2)加载test_case包里的test_Demo1模块里的TestDemo1类里的test_case1方法,加载test_case包里的test_Demo2模块里的TestDemo2类里的test_case2方法。
TestLoader().loadTestsFromNames(['test_case.test_Demo1.TestDemo1.test_case1','test_case.test_Demo2.TestDemo2.test_case2'])
(3)加载test_Demo1模块里的TestDemo1类(test_case1方法)。
TestLoader().loadTestsFromTestCase(test_Demo1.TestDemo1)
(4)加载test_Demo1模块(test_case1方法)。
TestLoader().loadTestsFromModule(test_Demo1)
(5)加载test_Demo2模块(test_case2方法)。
TestLoader().discover(start_dir='./', pattern='test*2.py'))

方式二:

定义函数(addTest方式添加用例)

1、创建runtest2.py文件,脚本代码:

代码语言:javascript复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
from test_case import test_Demo1
from test_case import test_Demo2
"""
测试套件实例:方式二:定义函数(addTest方式添加用例)
"""
def suite():
    suite = unittest.TestSuite()
    suite.addTest(test_Demo1.TestDemo1('test_case1'))
    suite.addTest(test_Demo2.TestDemo2('test_case2'))
    return suite

if __name__=='__main__':
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(suite())

2、执行runtest2.py文件,运行结果:

执行test_Demo1模块里的TestDemo1类里的test_case1方法;

执行test_Demo2模块里的TestDemo2类里的test_case2方法。

方式三:

定义函数(map方式添加用例)

1、创建runtest3.py文件,脚本代码:

代码语言:javascript复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
from test_case import test_Demo1
"""
测试套件实例:方式三:定义函数(map方式添加用例)
"""
def suite():
    tests = ['test_case1']
    return unittest.TestSuite(map(test_Demo1.TestDemo1,tests))

if __name__=='__main__':
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(suite())

2、执行runtest3.py文件,运行结果:

执行test_Demo1模块里的TestDemo1类里的test_case1方法。

方式四:

嵌套测试套件

1、创建runtest4.py文件,脚本代码:

代码语言:javascript复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
import runtest2
import runtest3
"""
测试套件实例:方式四:嵌套测试套件(多个测试套件构建成更大的测试套件)
"""
suite1 = runtest2.suite()
suite2 = runtest3.suite()
alltests = unittest.TestSuite([suite1, suite2])

if __name__=='__main__':
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(alltests)

2、执行runtest4.py文件,运行结果:

将runtest2和runtest3模块的测试套件进行组合后执行。

方式五:

TestLoader生成默认的测试套件

1、创建runtest5.py文件,脚本代码:

代码语言:javascript复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
from test_case import test_Demo1
"""
测试套件实例:方式五:TestLoader生成默认的测试套件
"""
suite = unittest.TestLoader().loadTestsFromTestCase(test_Demo1.TestDemo1)

if __name__=='__main__':
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(suite)

2、执行runtest5.py文件,运行结果:

执行test_Demo1模块里的TestDemo1类(test_case1方法)。

0 人点赞