您的位置:

用pytest命令行测试您的Python代码的最佳实践

在编写Python代码的过程中,测试是至关重要的一步。测试不仅可以检查代码的正确性,还可以帮助我们发现潜在的问题并改善代码的可维护性和可读性。这篇文章将会介绍用pytest命令行测试您的Python代码的最佳实践,让您的测试更加高效、方便。

一、安装 pytest

在开始用pytest命令行测试您的Python代码之前,您需要先安装pytest。安装 pytest 有两种方式,第一种是使用pip安装,这是最简单和最流行的方式,只需在命令行中输入以下代码即可:

pip install pytest

第二种方式是通过conda进行安装,输入以下代码:

conda install -c anaconda pytest

如果您使用anaconda,这种方式可能更方便。两种方式都可以达到同样的目的,都能成功安装 pytest 。

二、创建测试文件

一般来说,我们会将测试代码放在和被测代码同级目录下的 test/ 目录中。在该目录下创建一个名为test_*.py的文件,以 test_ 开头并以 .py 结尾,*是你要测试的文件的名称。比如,如果你要测试一个叫做 helloworld.py 的文件,那么你应该创建一个名为 test_helloworld.py 的测试文件。 这个文件将包含所有的测试代码。

我们来看一个例子。我们有一个名为 math.py 的模块,其中包含几个基本函数。现在我们想要为这个模块编写测试代码,以确保这些函数能够按照预期工作。首先,我们需要创建一个test_math.py的文件。以下是示例代码:

import math

def test_add():
    assert math.add(1, 1) == 2
    assert math.add(5, 6) == 11
    assert math.add(0, 0) == 0

def test_subtract():
    assert math.subtract(2, 1) == 1
    assert math.subtract(6, 5) == 1
    assert math.subtract(0, 0) == 0

def test_multiply():
    assert math.multiply(3, 4) == 12
    assert math.multiply(2, 5) == 10
    assert math.multiply(0, 0) == 0

def test_divide():
    assert math.divide(8, 2) == 4
    assert math.divide(6, 3) == 2
    assert math.divide(5, 0) == None

在这个例子中,我们为 math.py 文件中的每个函数编写了一个测试函数。每个测试函数都包含多个断言,以检查函数是否按预期工作。如果断言失败,则表示函数不能正常工作。pytest将打印错误信息以告诉你问题出在哪里。

三、运行测试

在编写完测试代码后,我们要运行测试。运行测试时,我们需要在test目录下打开终端并输入以下代码:

pytest

运行后,pytest将搜索所有符合测试文件命名约定(以 test_ 开头,以 .py 结尾的文件)的文件并运行其中的测试代码。如果测试代码没有问题,则测试将通过,否则将输出错误信息。

例如,我们在上一步的例子中编写了 test_math.py 文件。 让我们在test目录下运行 pytest:

pytest

如果所有测试都通过,您将看到下列输出信息:

============================= test session starts ==============================
platform linux -- Python 3.x.y, pytest-6.x.y, py-1.x.y, pluggy-1.x.y
rootdir: /path/to/test/directory
collected x items

test_math.py ...                                                       [100%]

============================== x passed in y.yz s ==============================

这里,“x”是测试函数数,“y.yz”是所有测试函数的总运行时间。此外,点(“.”)表示一项测试通过,表示一项测试失败的F失败

四、pytest命令行选项

Pytest提供了许多命令行选项,其中一些选项可以帮助您更好地控制测试行为。以下是一些最常用的 pytest 命令行选项:

--verbose:显示测试用例的详细信息,包括每个测试用例的名称。

--failed-first:监测并先运行历史失败的用例

--maxfail=num:在遇到指定数量的测试失败后停止测试。

--pdb:当测试失败时启动Python调试器。

其他有用的pytest命令行选项可以通过运行pytest --help查看。

五、结论

使用pytest来测试您的Python代码是一种简单而有效的方法。它可以帮助您编写更好、更健壮的代码,并快速发现问题。 通过遵循本文中的最佳实践,您可以在测试代码方面更加熟练地运用pytest。