python-测试-unittest简要入门
项目结构
-
包名需要以 test 开头
-
python 文件需要以 test_ 开头
例如
- 测试类以 Test 开头(需要继承 unittest.TestCase 类),内部的测试函数以 test 开头命名
常用函数
- setUpClass 和 tearDownClass 分别用于测试类的开头和结尾要执行的步骤, 需要 @classmethod 注释
- setUp 和 tearDown 分别用于每个测试函数的开头和结尾要执行的步骤
- 更多特性: unittest 类与函数
常用测试函数
# 用于测试 a 和 b 的值是否相等
self.assertEqual(a, b)
# 测试 错误是否成功捕捉
with self.assertRaises(ValueError):
raise ValueError('Value Err')
# 满足条件, 跳过测试
@unittest.skipIf(sys.platform == 'win32',
"测试不运行在 windows")
def test_win(self):
print('test windows')
跳过指定python版本
# 满足条件, 跳过测试 @unittest.skipIf(sys.version_info < (3, 7), "只运行在 python 3.7+") def test_py39(sel/f): print('test python 3.7+')
其他方式: unittest 跳过测试的方法
运行
命令行运行测试模块
python -m unittest test_module
命令行运行测试类
python -m unittest test_module.TestClass
命令行运行测试类的测试函数
python -m unittest test_module.TestClass.test_method
更多命令行运行详情: unittest 命令行接口
实验
import sys
import unittest
class TestFunc(unittest.TestCase):
@classmethod
def setUpClass(cls):
print('测试类开始')
@classmethod
def tearDownClass(cls):
print('测试类结束')
def setUp(self):
print('测试函数开始')
def tearDown(self):
print('测试函数结束')
def test_init(self):
a = 1
self.assertEqual(a, 1) # 推荐
self.assertTrue(a == 1)
# 测试 错误是否成功捕捉
with self.assertRaises(ValueError):
raise ValueError('Value Err')
# 满足条件, 跳过测试
@unittest.skipIf(sys.platform == 'win32',
"测试不运行在 windows")
def test_win(self):
print('test windows')
# 满足条件, 跳过测试
@unittest.skipIf(sys.version_info < (3, 7),
"只运行在 python 3.7+")
def test_py39(self):
print('test python 3.7+')
官方中文文档: unittest 单元测试框架
本文来自博客园,作者:漫漫长夜何时休,转载请注明原文链接:https://www.cnblogs.com/ag-chen/p/16485487.html