整理 unittest、pytest、coverage、parameterized 等测试工具,并保留常用命令与参数。
导航
收录来源
raw/langs/pythons/tools/tester.rstraw/langs/pythons/tools/testers/unittest.rstraw/langs/pythons/tools/testers/parameterized.rstraw/langs/pythons/tools/testers/Coverage.rstraw/langs/pythons/tools/testers/Pytest.rst
条目内容
unittest
- unittest 是 Python 标准库中自带的一个单元测试框架,它提供了组织和执行测试的基础设施。
- unittest 原名为PyUnit,基于 JUnit(Java 的单元测试框架)设计,支持测试自动化、分享设置和关闭代码、独立于测试框架的测试,以及测试集合。
基本概念和功能
- Test Case(测试用例):
unittest.TestCase是所有测试用例的基类,编写测试方法时,需要继承这个类。 - Test Suite(测试套件): 用于将多个测试用例组合在一起。
- Test Runner(测试运行器): 用于执行测试用例,并提供测试结果。
- Test Fixture(测试固件): 在测试方法执行前后的准备和清理工作,通过 setUp 和 tearDown 方法实现。
parameterized
- parameterized 是一个用于 Python 单元测试框架中的库,主要用于对测试用例进行参数化。
示例:
import unittest
from parameterized import parameterized
def add(a, b):
return a + b
class TestAdd(unittest.TestCase):
# 参数化测试
@parameterized.expand([
("test_case_1", 1, 2, 3),
("test_case_2", -1, 1, 0),
("test_case_3", 0, 0, 0),
("test_case_4", 1.5, 2.5, 4.0),
])
def test_add(self, name, a, b, expected):
result = add(a, b)
self.assertEqual(result, expected)
if __name__ == "__main__":
unittest.main()
Coverage
- Coverage是一个衡量你的测试覆盖你的代码的多大程度的工具。它生成一份报告,显示哪些部分在测试期间执行了代码,并突出显示缺乏测试覆盖范围的区域。
Pytest-测试框架
- Pytest是一个强大的Python测试框架。它通过提供简洁的语法和广泛的功能来简化编写和执行测试的过程,例如测试发现、固定装置和断言。
Note
详情参见 demo-python
Pytests/normal Pytests/plugin Pytests/hook Pytests/conftest.py Pytests/pytest.fixture Pytests/pytest.hookimpl Pytests/pytest.mark