前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测试框架-unittest-测试套件实例

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

作者头像
wangmcn
发布2022-07-25 15:54:01
2990
发布2022-07-25 15:54:01
举报
文章被收录于专栏:AllTests软件测试

测试套件实例

目录

  • 方式一: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方法)。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AllTests软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 一、用addTest方法
  • 二、用addTests方法
  • 三、用addTests方法 + TestLoader方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档