目录
命名篇
命令行篇
测试断言篇
常见测试断言
特殊测试断言
测试前后篇
在每个测试方法前后执行
在每个测试类的所有方法前后执行
不运行测试篇
参考
命名篇
测试模块应以 test_开头
测试类应以Test开头或结尾
测试类中的测试方法应该以test_开头
命令行篇
测试的粒度从大到小一共有四种:所有的测试模块 > 某个测试模块 > 某个测试类 > 某个测试方法
对应的命令行如下
注:需要cd进入测试模块所在的目录
python -m unittest
python -m unittest test_module1 test_module2
python -m unittest test_module.TestClass
python -m unittest test_module.TestClass.test_method
也可以在任意位置运行测试文件
python -m unittest tests/test_something.py
P.S. 测试文件和测试模块是等价的,只不过文件之间的层级用 / ,而模块之间的层级用 .
测试断言篇
常见测试断言
特殊测试断言
assertRaises必须作为上下文管理器使用
with self.assertRaises(SomeException):
do_something()
测试前后篇
在每个测试方法前后执行
通过定义setUp函数和tearDown函数完成
class TestRepair(unittest.TestCase):
def setUp(self):
print("\n测试开始了")
def tearDown(self):
print("测试结束了")
def test_example1(self):
self.assertNotEqual(1, 2)
def test_example2(self):
self.assertNotEqual(3, 4)
该测试类的输出是
测试开始了
测试结束了
.
测试开始了
测试结束了
.
在每个测试类的所有方法前后执行
通过定义setUpClass函数和tearDownClass函数完成(必须使用@classmethod装饰器)
class TestRepair(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("\n测试开始了")
@classmethod
def tearDownClass(cls):
print("测试结束了")
def test_example1(self):
self.assertNotEqual(1, 2)
def test_example2(self):
self.assertNotEqual(3, 4)
该测试类的输出是
测试开始了
..测试结束了
不运行测试篇
使用装饰器语句 @unittest,skipIf(arg1,arg2)
@unittest.skipIf(sys.version_info < (3,9),"only support 3.9+")
def test_example2(self):
self.assertNotEqual(3, 4)
参考
1. 码农高天的b站视频
【python】十分钟极速入门unittest——写测试其实很简单!一套实践就够了!_哔哩哔哩_bilibili
2. python unittest 官方文档
unittest --- 单元测试框架 — Python 3.9.17 中文文档