# Summary 是个 [[Python]] 测试框架 # Cues # Notes 好的,我们来简单介绍一下 `pytest` 这个 Python 测试框架。 ## 什么是 `pytest`? `pytest` 是一个非常流行、功能强大且易于使用的 **Python 测试框架**。它旨在让编写和运行各种规模的测试变得简单、高效。无论是简单的单元测试、复杂的集成测试还是功能测试,`pytest` 都能很好地胜任。 ## 为什么选择 `pytest`?(主要优点) 1. **简单易上手:** - 你不需要继承任何特殊的测试类。普通的 Python 函数就可以作为测试函数。 - 测试文件和测试函数的命名约定也很直观(通常以 `test_` 开头)。 2. **功能强大:** - **自动发现测试:** 只要按照约定命名,`pytest` 就能自动找到并运行你的测试。 - **Fixtures(夹具):** 这是 `pytest` 的一大亮点。它们提供了一种非常灵活、可重用的方式来设置测试环境(例如,创建数据库连接、临时文件、模拟对象)并在测试结束后进行清理。 - **参数化测试:** 可以用不同的输入数据多次运行同一个测试函数,非常适合测试多种边界条件。 - **断言重写:** 当你的 `assert` 语句失败时,`pytest` 会提供非常详细和有用的错误信息,告诉你具体是什么地方出了问题,而不是仅仅抛出一个 `AssertionError`。 - **丰富的插件生态系统:** 有大量的第三方插件可以扩展 `pytest` 的功能,例如用于测试覆盖率、并发执行、报告生成等。 - **详细的报告:** 运行测试后,`pytest` 会输出清晰的测试结果摘要。 ## 如何使用 `pytest`?(基本步骤) 1. 安装: 你只需要用 pip 安装它: Bash ```Java pip install pytest ``` 2. 编写测试文件: 创建一个 Python 文件,通常以 test_ 开头(例如 test_example.py)。 在这个文件中,编写以 test_ 开头的函数。这些函数就是你的测试用例。 **`test_example.py` 示例:** Python ```Java # 假设这是你要测试的函数 def add(a, b): return a + b def subtract(a, b): return a - b # 这是你的测试函数 def test_add_positive_numbers(): assert add(2, 3) == 5 def test_add_negative_numbers(): assert add(-1, -1) == -2 def test_subtract_numbers(): assert subtract(5, 2) == 3 def test_failing_example(): # 这个测试会故意失败,展示pytest的错误报告 assert add(1, 1) == 3 ``` 3. 运行测试: 打开你的终端或命令行,进入到 test_example.py 文件所在的目录,然后直接输入 pytest 命令并回车: Bash ```Java pytest ``` ## 运行结果示例(可能看起来像这样) ```Java ============================= test session starts ============================== platform ... -- Python ... plugins: ... collected 4 items test_example.py ....F [100%] =================================== FAILURES =================================== ______________________________ test_failing_example ______________________________ def test_failing_example(): > assert add(1, 1) == 3 E assert 2 == 3 E + where 2 = add(1, 1) test_example.py:21: AssertionError =========================== short test summary info ============================ FAILED test_example.py::test_failing_example - assert 2 == 3 ========================= 1 failed, 3 passed in 0.05s ========================== ``` 你会看到 `pytest` 自动找到了 4 个测试,其中 3 个通过,1 个失败。对于失败的测试,它提供了非常详细的错误信息(`assert 2 == 3` 和 `where 2 = add(1, 1)`),这比普通的 `AssertionError` 要有用得多。 **总结:** `pytest` 是 Python 社区中非常受欢迎的测试工具,它通过其简洁的语法和强大的功能,极大地简化了测试的编写、管理和执行过程,是 Python 项目开发中推荐使用的测试框架。