📜  pytest 拆解方法 - Python (1)

📅  最后修改于: 2023-12-03 15:04:02.263000             🧑  作者: Mango

pytest 拆解方法 - Python

测试是软件开发的重要组成部分,目的是验证代码的正确性和稳定性。在 Python 中,pytest 已成为一个流行的测试框架,为测试提供了强大的支持。本文将介绍 pytest 测试框架的主要功能和使用方法。

安装 pytest

在开始使用 pytest 之前,需要先安装它。可以使用 pip 工具进行安装,命令如下:

pip install pytest
编写测试

pytest 支持两种主要的方式来编写测试:

  1. 函数式测试
  2. 类式测试
函数式测试

这种方式是通过编写函数来实现测试,函数的名称以 test_ 开头。一个简单的示例如下:

# test_example.py

def test_addition():
    assert 2 + 2 == 4

在这个示例中,test_addition 函数使用 assert 语句来验证 2 + 2 的结果是否为 4。当执行测试时,pytest 将会调用这个函数,并检查 assert 语句的结果。如果 assert 语句的结果为 True,测试将会通过。

pytest 会在当前目录下自动查找以 test_ 开头的函数,并执行它们。也可以指定文件或目录来运行测试:

pytest test_example.py
pytest tests/
类式测试

这种方式是通过编写类来实现测试,类需要继承 unittest.TestCase。一个简单的示例如下:

# test_example.py

import unittest

class TestAddition(unittest.TestCase):
    def test_addition(self):
        self.assertEqual(2 + 2, 4)

在这个示例中,TestAddition 类继承了 unittest.TestCase,并包含了一个名为 test_addition 的方法来验证 2 + 2 的结果是否为 4。同样地,当执行测试时,pytest 将会调用这个方法,并检查 self.assertEqual 语句的结果。如果 self.assertEqual 语句的结果为 True,测试将会通过。

运行测试

运行测试非常简单,只需要使用 pytest 命令即可:

pytest

这个命令将会运行当前目录下的所有测试。如果测试通过,将会输出 PASSED,否则将会输出 FAILED

参数化测试

pytest 还支持参数化测试,可以在不修改代码的情况下运行多组测试数据。一个简单的示例如下:

# test_example.py

import pytest

@pytest.mark.parametrize("a, b, expected", [(1, 2, 3), (2, 3, 5), (3, 4, 7)])
def test_addition(a, b, expected):
    assert a + b == expected

在这个示例中,test_addition 函数使用 @pytest.mark.parametrize 装饰器来指定多组测试数据,每组测试数据包含了两个相加的数以及它们的期望和。pytest 将会运行每组测试数据,并检查 assert 语句的结果。

参数化测试非常适合用于验证边界条件和异常情况。

总结

本文介绍了 pytest 测试框架的主要功能和使用方法,包括函数式测试、类式测试、参数化测试等。pytest 是一个优秀的 Python 测试框架,它提供了方便的测试方法和丰富的测试用例支持,可以帮助开发者快速准确地验证代码的正确性和稳定性。