13 使用pytest进行测试之pytest的基础用法

在上一节中,我们介绍了如何进行pytest的安装和配置。在这一节中,我们将深入探讨pytest的基础用法,包括如何编写和组织测试代码,以及运行测试的基础方法。

1. 测试用例的基本结构

pytest的测试用例是由以test_开头的函数定义组成的。每个测试用例通常包含三部分:

  1. 输入 - 测试函数中调用的功能。
  2. 期望结果 - 我们预期得到的结果。
  3. 断言 - 检查实际结果与期望结果是否一致。

下面是一个简单测试用例的示例:

1
2
3
# demo.py - 被测试的功能
def add(a, b):
return a + b
1
2
3
4
5
6
7
8
# test_demo.py - 测试用例
import pytest
from demo import add

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

在这个示例中,我们定义了一个简单的add函数,它的作用是返回两个数的和。在test_demo.py中,我们编写测试用例test_add来验证add函数的正确性。

2. 运行测试用例

要运行测试用例,我们可以在命令行中使用pytest命令。确保你所在的目录中包含测试文件,然后运行以下命令:

1
pytest test_demo.py

在命令行中,我们将看到类似于以下的输出,显示每个测试的结果:

1
2
3
4
5
6
7
============================= test session starts =============================
platform win32 -- Python 3.x.x, pytest-X.X.X, py-X.X.X, pluggy-X.X.X
collected 1 item

test_demo.py . [100%]

============================== 1 passed in 0.01s ==============================

.表示测试通过,F表示测试失败。

3. 测试用例命名规则

为确保pytest能自动识别测试用例,测试文件和函数的命名必须遵循以下规则:

  • 测试文件名以test_开头或结尾(例如,test_demo.py)。
  • 测试函数名以test_开头(例如,test_add)。

4. 组织测试用例

对于较大项目,测试用例应当按照模块进行合理组织。可以通过在测试目录下创建多个测试文件来实现这一点。例如:

1
2
3
4
tests/
test_math.py
test_string.py
test_list.py

每个测试文件分别负责不同功能模块的测试,让代码更加清晰和易于维护。

5. 使用pytest的其他特性

5.1. 使用assert语句

pytest中,我们使用assert语句进行断言。与传统的测试框架中使用的特定断言方法不同,pytest可以通过内置的assert机制,自行生成详细的错误报告。

对于以下测试代码:

1
2
3
def test_addition():
result = add(2, 3)
assert result == 5, f"Expected 5 but got {result}"

如果result不等于5pytest会输出详细的错误信息,包括期望值和实际值,帮助您快速定位问题。

5.2. 跳过和期待失败的测试

在某些情况下,您可能希望跳过某些测试或在测试中预测失败。pytest提供了相应的标记:

1
2
3
4
5
6
7
@pytest.mark.skip(reason="暂时不执行此测试")
def test_skipped():
assert add(1, 1) == 3

@pytest.mark.xfail
def test_expected_fail():
assert add(1, 1) == 3 # 这个测试会标记为预期失败

5.3. 使用夹具(Fixtures)

pytest的夹具是一个强大的特性,可用于在测试执行前设置上下文环境。例如,可以用于提供数据库连接、创建测试数据等:

1
2
3
4
5
6
7
8
import pytest

@pytest.fixture
def sample_data():
return [1, 2, 3]

def test_sum(sample_data):
assert sum(sample_data) == 6

这段代码使用夹具sample_data提供了一组数据,并在测试中使用。

结语

在这一节中,我们探讨了pytest的基础用法,包括如何编写测试用例、运行测试、命名规则、组织测试文件、使用断言、跳过测试、期待失败测试及使用夹具。这些都是构建pytest测试用例的基础。

在下一节中,我们将介绍pytest的参数化测试,这是一种提高测试覆盖率和代码简洁性的有效方法,帮助我们消除重复代码。敬请期待!

13 使用pytest进行测试之pytest的基础用法

https://zglg.work/python-auto-test/13/

作者

AI免费学习网(郭震)

发布于

2024-08-11

更新于

2024-08-12

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论