当前位置:网站首页>测试框架-unittest-测试套件、结果输出到文件
测试框架-unittest-测试套件、结果输出到文件
2022-07-25 16:19:00 【wangmcn】
测试套件、结果输出到文件
目录
- 1、测试套件
- 1.1、方式一:unittest.main()
- 1.2、方式二:unittest.TestSuite()
- 1.3、方式三:unittest.defaultTestLoader()
- 2、结果输出到文件
1、测试套件
1.1、方式一:unittest.main()
1、创建test_Case1.py文件
脚本代码:
#!/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文件
脚本代码:
#!/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)构造测试集,实例化测试套件。
suite = unittest.TestSuite()(2)将测试用例加载到测试套件中。
执行顺序为安装加载顺序:先执行test_case2,再执行test_case1,不执行test_case3(因为没有加载)。
suite.addTest(TestDemo('test_case2'))
suite.addTest(TestDemo('test_case1'))(3)执行测试用例,实例化TextTestRunner类。
runner = unittest.TextTestRunner(verbosity=2)(4)使用run()方法运行测试套件(即运行测试套件中的所有用例)。
runner.run(suite)1.3、方式三:unittest.defaultTestLoader()
1、创建test_Case3.py文件
脚本代码:
#!/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。
test_dir = './'
discover = unittest.defaultTestLoader.discover(test_dir, pattern='test_*3.py')(2)执行测试用例,实例化TextTestRunner类。
runner = unittest.TextTestRunner(verbosity=2)(3)使用run()方法运行测试套件(即运行测试套件中的所有用例)。
runner.run(discover)2、结果输出到文件
执行测试用例时,想把结果输出到文件里,就可以用到Python的open()函数来对文件进行操作。
1、创建OutputFile.py文件
脚本代码:
#!/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文件(若文件存在则不用再次生成),如图所示:结果输出到此文件里。
边栏推荐
- Exploration of 6-wire SPI transmission mode
- 开发者如何为React Native选择合适的数据库
- [JS advanced] JS regular correlation functions and regular objects_ 02
- 用递归进行数组求和
- [image hiding] digital image watermarking method technology based on hybrid dwt-hd-svd with matlab code
- Paper notes: highly accurate protein structure prediction with alphafold (alphafold 2 & appendix)
- MySQL 元数据锁(MDL)
- Shared lock
- leetcode:154. 寻找旋转排序数组中的最小值 II【关于旋转排序数组的中后定位二分法】
- Record locks
猜你喜欢

2W word detailed data Lake: concept, characteristics, architecture and cases

Sum arrays with recursion

【故障诊断】基于贝叶斯优化支持向量机的轴承故障诊断附matlab代码

优必选大型仿人服务机器人Walker X的核心技术突破

Paper notes: highly accurate protein structure prediction with alphafold (alphafold 2 & appendix)

2w字详解数据湖:概念、特征、架构与案例

面试突击:为什么 TCP 需要 3 次握手?

Understanding service governance in distributed development

如何构建面向海量数据、高实时要求的企业级OLAP数据引擎?

0x80131500打不开微软商店的解决办法
随机推荐
Exploration of 6-wire SPI transmission mode
The second revolution of reporting tools
Talk about how to use redis to realize distributed locks?
MySQL check whether the table is locked
【ZeloEngine】反射系统填坑小结
leetcode:6127. 优质数对的数目【位运算找规律 + 两数之和大于等于k + 二分】
使用 Terraform 在 AWS 上快速部署 MQTT 集群
[server data recovery] data recovery cases of raid information loss caused by unexpected power failure of HP EVA server storage
C Music
【故障诊断】基于贝叶斯优化支持向量机的轴承故障诊断附matlab代码
mysql意向锁
意向锁(Intention Lock)
C # simulation lottery
解决Win10磁盘占用100%
MySQL 悲观锁
mysql 隔离级别事务
食品安全丨无处不在的冷冻食品,你真的了解吗?
PageHelper.startPage没有生效问题
Implementation of recommendation system collaborative filtering in spark
MySQL隐式锁