在哪做网站好东莞保安
1. unittest 介绍
-  
是什么:Python 标准库自带的单元测试框架,遵循 xUnit 架构(类似Java的JUnit)。
 -  
核心概念:
-  
TestCase:测试用例的基类,所有测试类需继承它。 -  
TestSuite:测试套件,用于聚合多个测试用例。 -  
TestLoader:加载测试用例。 -  
TestRunner:执行测试并输出结果。 
 -  
 -  
适用场景:单元测试、集成测试,适合需要与Python标准库深度集成的项目。
 
2. 环境搭建
-  
无需安装:Python 自带,直接导入即可:
python
复制
import unittest 
3. 用例规则
-  
测试类:必须继承
unittest.TestCase。 -  
测试方法:以
test_开头(如test_login)。 -  
断言方法:使用
self.assertXxx()(如self.assertEqual())。 
4. 用例编写示例
python
复制
import unittestclass TestMath(unittest.TestCase):def test_add(self):self.assertEqual(1 + 1, 2)def test_multiply(self):self.assertTrue(2 * 3 == 6)if __name__ == "__main__":unittest.main() 
5. 断言方法
| 方法 | 说明 | 
|---|---|
self.assertEqual(a, b) | 断言 a == b | 
self.assertNotEqual(a, b) | 断言 a != b | 
self.assertTrue(x) | 断言 x 为 True | 
self.assertFalse(x) | 断言 x 为 False | 
self.assertIn(a, b) | 断言 a 在 b 中 | 
self.assertRaises(Error) | 断言代码块抛出指定异常 | 
6. 测试夹具(Setup/Teardown)
-  
类级别:
python
复制
@classmethod def setUpClass(cls): # 类初始化(整个类执行前运行一次) @classmethod def tearDownClass(cls):# 类清理(整个类执行后运行一次) -  
方法级别:
python
复制
def setUp(self): # 每个测试方法执行前运行 def tearDown(self): # 每个测试方法执行后运行 
7. 用例跳过
-  
无条件跳过:
python
复制
@unittest.skip("跳过原因") def test_skip(self):pass -  
条件跳过:
python
复制
@unittest.skipIf(sys.platform == "win32", "Windows不支持") def test_linux_only(self):pass 
8. 测试套件(TestSuite)
-  
手动聚合用例:
python
复制
suite = unittest.TestSuite() suite.addTest(TestMath("test_add")) suite.addTest(TestLogin("test_login")) -  
自动发现用例:
python
复制
loader = unittest.TestLoader() suite = loader.loadTestsFromModule(test_module) # 从模块加载 suite = loader.loadTestsFromTestCase(TestMath) # 从类加载 
9. 参数化
-  
原生不支持:需借助第三方库
parameterized或ddt。 -  
使用
ddt示例:python
复制
import ddt@ddt.ddt class TestDataDriven(unittest.TestCase):@ddt.data((1, 2, 3), (0, 0, 0))@ddt.unpackdef test_add(self, a, b, expected):self.assertEqual(a + b, expected) 
10. 与 pytest 的对比
| 特性 | unittest | pytest | 
|---|---|---|
| 语法简洁性 | 需继承 TestCase,断言方法较繁琐 | 无需继承,直接使用 assert | 
| 参数化 | 依赖第三方库(如ddt) | 原生支持 @pytest.mark.parametrize | 
| 夹具 | setUp/tearDown | 更灵活的 @pytest.fixture | 
| 插件生态 | 较少 | 丰富(如并发、Allure报告) | 
| 执行效率 | 较低 | 更高(支持并发) | 
11. 集成 HTMLTestRunner(生成测试报告)
步骤:
-  
下载
HTMLTestRunner.py(非标准库,需单独放置)。 -  
在代码中调用:
python
复制
with open("report.html", "wb") as f:runner = HTMLTestRunner.HTMLTestRunner(stream=f,title="测试报告",description="用例执行详情")runner.run(suite) 
12. 生成测试报告
-  
控制台输出:
bash
复制
python -m unittest discover -s tests # 自动发现并执行测试 -  
XML 报告(用于CI集成):
bash
复制
python -m unittest discover -s tests -p "test_*.py" -v > report.xml 
总结
-  
适用场景:适合需要与Python标准库无缝集成的项目,或团队习惯xUnit风格。
 -  
优势:
-  
无需额外安装,兼容性强。
 -  
清晰的类与方法结构。
 
 -  
 -  
劣势:灵活性较低,扩展依赖第三方库。
 -  
推荐搭配:结合
ddt(参数化)、coverage(覆盖率)、HTMLTestRunner(报告)提升效率。 
