pytest 仅运行更改的文件

作者:编程家 分类: python 时间:2025-09-03

pytest 是一个常用的 Python 测试框架,它提供了丰富的功能和灵活的配置选项。在编写大型项目时,测试文件的数量可能会很多,每次运行所有的测试文件可能会耗费很多时间。因此,有时我们希望只运行更改过的文件,以提高测试的效率。本文将介绍如何使用 pytest 来仅运行更改的文件,并给出相应的案例代码。

使用 pytest 运行更改的文件

pytest 提供了一个命令行选项 `--lf`(--last-failed),可以仅运行上次运行失败的测试文件。结合 `--ff`(--failed-first)选项,可以先运行上次失败的文件,再运行其他更改的文件。这样,我们就可以只运行更改的文件,而不必每次都运行所有的测试。

为了演示这个功能,我们假设有以下两个测试文件:`test_addition.py` 和 `test_subtraction.py`。首先,我们运行所有的测试文件,确保所有的测试都通过。

python

# test_addition.py

def test_addition():

assert 2 + 2 == 4

# test_subtraction.py

def test_subtraction():

assert 4 - 2 == 2

接下来,我们修改 `test_addition.py` 文件中的测试用例,使其失败。

python

# test_addition.py

def test_addition():

assert 2 + 2 == 5 # 修改为错误的断言

现在,我们可以使用 `--lf` 和 `--ff` 选项来只运行更改的文件。在命令行中执行以下命令:

pytest --ff --lf

结果会显示首先运行 `test_addition.py` 文件,因为它是上次失败的文件,然后再运行 `test_subtraction.py` 文件。这样,我们只运行了更改的文件,而不必每次都运行所有的测试。

在本文中,我们介绍了如何使用 pytest 仅运行更改的文件,以提高测试的效率。通过使用 `--lf` 和 `--ff` 选项,我们可以先运行上次失败的文件,再运行其他更改的文件。这样,我们只需要运行需要测试的部分,而不必每次都运行所有的测试。这对于大型项目来说尤为重要,可以大大减少测试的时间和资源消耗。

希望本文对你理解 pytest 的文件选择功能有所帮助。如果你有任何问题或疑惑,请随时向我们提问。

参考文献:

- pytest 官方文档: https://docs.pytest.org/en/latest/index.html