pytest框架详解

pytest 是一个功能强大且灵活的测试框架,广泛用于Python项目的单元测试、集成测试等。它具有简单的语法和强大的插件机制,使得测试的编写和维护变得更加容易。本文将通过图文示例为大家详细介绍 pytest 的基本用法。

1. 安装pytest

在开始使用 pytest 之前,首先要安装该框架。在命令行中输入以下命令:

pip install pytest

2. 编写测试用例

pytest 的测试用例通常以 test_ 开头,并且文件名也应以 test_ 开头或以 _test 结尾。例如,我们可以创建一个 test_sample.py 文件,内容如下:

# test_sample.py

def add(a, b):
    return a + b

def test_add():
    assert add(1, 2) == 3
    assert add(-1, 1) == 0
    assert add(0, 0) == 0

在上述代码中,我们定义了一个简单的 add 函数和一个对应的测试函数 test_add。通过使用 assert 关键字,我们可以验证 add 函数的输出是否符合预期。

3. 运行测试

在命令行中,进入到包含 test_sample.py 文件的目录,运行以下命令以执行测试:

pytest

您将看到类似如下的输出,表示测试通过:

============================= test session starts =============================
platform win32 -- Python 3.8.0, pytest-6.0.1, py-1.10.0, pluggy-0.13.1
collected 1 item

test_sample.py .                                                      [100%]

============================== 1 passed in 0.04s ==============================

4. 断言与错误信息

pytest 支持多种类型的断言,失败时还会自动输出详细的错误信息。例如,我们故意将 assert add(1, 2) == 4 修改为错误的值,重新运行测试:

def test_add():
    assert add(1, 2) == 4  # 故意错误

运行后,将得到如下输出:

=================================== FAILURES ===================================
__________________________________ test_add ___________________________________

    def test_add():
>       assert add(1, 2) == 4
E       assert 3 == 4

test_sample.py:6:7
=========================== short test summary info =============================
FAILED test_sample.py::test_add - assert 3 == 4
============================== 1 failed in 0.02s ==============================

从错误信息中可以清晰地看到失败的位置和预期值。

5. 跳过和标记测试

有时我们想跳过某些测试,比如未完成的功能,可以使用 @pytest.mark.skip 装饰器:

import pytest

@pytest.mark.skip(reason="暂时跳过此测试")
def test_skip():
    assert False

此外,pytest 还允许我们定义自定义标记,通过命令行选项来选择性运行某些测试。

6. 测试夹具

pytest 提供了测试夹具(fixtures)的功能,可以用于准备和清理测试环境。定义夹具非常简单:

import pytest

@pytest.fixture
def sample_fixture():
    return 42

def test_with_fixture(sample_fixture):
    assert sample_fixture == 42

7. 结论

pytest 是一个强大的Python测试框架,提供了丰富的功能和灵活的用法。通过简单的语法和各种特性,用户可以轻松编写和维护测试用例。本文涵盖了基本的用法,希望大家能在自己的项目中使用 pytest 来提高代码质量。欢迎持续关注,并不断探索 pytest 其他高级特性和插件,以满足更复杂的测试需求。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部