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

测试框架-unittest-测试套件、结果输出到文件

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

测试套件、结果输出到文件

目录

  • 1、测试套件
    • 1.1、方式一:unittest.main()
    • 1.2、方式二:unittest.TestSuite()
    • 1.3、方式三:unittest.defaultTestLoader()
  • 2、结果输出到文件

1、测试套件

1.1、方式一:unittest.main()

1、创建test_Case1.py文件

脚本代码:

代码语言:javascript
复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 导入unittest模块
import unittest
"""
测试套件:方式一:unittest.main()
"""
# 定义测试类,父类为unittest.TestCase
class TestDemo(unittest.TestCase):

    # 每个测试方法运行前执行
    def setUp(self):
        print('setUp')

    # 每个测试方法运行完后执行
    def tearDown(self):
        print('tearDown')

    # 所有的测试方法都要以test为开头
    def test_case1(self):
        print('test_case1')

    def test_case3(self):
        print('test_case3')

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

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

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

unittest.main()方法会搜索该模块下所有以test开头的测试方法,并自动执行它们。

执行顺序是命名顺序:先执行test_case1,再执行test_case2,最后执行test_case3。

1.2、方式二:unittest.TestSuite()

1、创建test_Case2.py文件

脚本代码:

代码语言:javascript
复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 导入unittest模块
import unittest
"""
测试套件:方式二:unittest.TestSuite()
"""
# 定义测试类,父类为unittest.TestCase
class TestDemo(unittest.TestCase):

    # 每个测试方法运行前执行
    def setUp(self):
        print('setUp')

    # 每个测试方法运行完后执行
    def tearDown(self):
        print('tearDown')

    # 所有的测试方法都要以test为开头
    def test_case1(self):
        print('test_case1')

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

    def test_case3(self):
        print('test_case3')

if __name__ == '__main__':
    suite = unittest.TestSuite()
    suite.addTest(TestDemo('test_case2'))
    suite.addTest(TestDemo('test_case1'))
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(suite)

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

(1)构造测试集,实例化测试套件。

代码语言:javascript
复制
suite = unittest.TestSuite()

(2)将测试用例加载到测试套件中。

执行顺序为安装加载顺序:先执行test_case2,再执行test_case1,不执行test_case3(因为没有加载)。

代码语言:javascript
复制
suite.addTest(TestDemo('test_case2'))
suite.addTest(TestDemo('test_case1'))

(3)执行测试用例,实例化TextTestRunner类。

代码语言:javascript
复制
runner = unittest.TextTestRunner(verbosity=2)

(4)使用run()方法运行测试套件(即运行测试套件中的所有用例)。

代码语言:javascript
复制
runner.run(suite)

1.3、方式三:unittest.defaultTestLoader()

1、创建test_Case3.py文件

脚本代码:

代码语言:javascript
复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 导入unittest模块
import unittest
"""
测试套件:方式三:unittest.defaultTestLoader()
"""
# 定义测试类,父类为unittest.TestCase
class TestDemo(unittest.TestCase):

    # 每个测试方法运行前执行
    def setUp(self):
        print('setUp')

    # 每个测试方法运行完后执行
    def tearDown(self):
        print('tearDown')

    # 所有的测试方法都要以test为开头
    def test_case1(self):
        print('test_case1')

    def test_case3(self):
        print('test_case3')

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

if __name__ == '__main__':
    test_dir = './'
    discover = unittest.defaultTestLoader.discover(test_dir, pattern='test_*3.py')
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(discover)

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

(1)构造测试集,使用defaultTestLoader的discover方法查找测试用例文件。

执行顺序是命名顺序:先执行test_case1,再执行test_case2,最后执行test_case3。

代码语言:javascript
复制
test_dir = './'
discover = unittest.defaultTestLoader.discover(test_dir, pattern='test_*3.py')

(2)执行测试用例,实例化TextTestRunner类。

代码语言:javascript
复制
runner = unittest.TextTestRunner(verbosity=2)

(3)使用run()方法运行测试套件(即运行测试套件中的所有用例)。

代码语言:javascript
复制
runner.run(discover)

2、结果输出到文件

执行测试用例时,想把结果输出到文件里,就可以用到Python的open()函数来对文件进行操作。

1、创建OutputFile.py文件

脚本代码:

代码语言:javascript
复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 导入unittest模块
import unittest
"""
结果输出到文件
"""
# 定义测试类,父类为unittest.TestCase
class TestDemo(unittest.TestCase):

    # 每个测试方法运行前执行
    def setUp(self):
        print('setUp')

    # 每个测试方法运行完后执行
    def tearDown(self):
        print('tearDown')

    # 所有的测试方法都要以test为开头
    def test_case1(self):
        print('test_case1')

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

if __name__ == '__main__':
    suite = unittest.TestSuite()
    suite.addTest(TestDemo('test_case1'))
    suite.addTest(TestDemo('test_case2'))
    # 执行测试,将结果输出到OutputFile文件中
    with open('OutputFile.txt', 'a') as f:
        runner = unittest.TextTestRunner(stream=f, verbosity=2)
        runner.run(suite)

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

同时会生成OutputFile.txt文件(若文件存在则不用再次生成),如图所示:结果输出到此文件里。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 1.1、方式一:unittest.main()
  • 1.2、方式二:unittest.TestSuite()
  • 1.3、方式三:unittest.defaultTestLoader()
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档