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

2022-07-25 15:31:17 浏览数 (1)

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

目录

  • 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文件(若文件存在则不用再次生成),如图所示:结果输出到此文件里。

0 人点赞