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