在上一节中,我们介绍了如何进行pytest
的安装和配置。在这一节中,我们将深入探讨pytest
的基础用法,包括如何编写和组织测试代码,以及运行测试的基础方法。
1. 测试用例的基本结构
pytest
的测试用例是由以test_
开头的函数定义组成的。每个测试用例通常包含三部分:
- 输入 - 测试函数中调用的功能。
- 期望结果 - 我们预期得到的结果。
- 断言 - 检查实际结果与期望结果是否一致。
下面是一个简单测试用例的示例:
1 | # demo.py - 被测试的功能 |
1 | # test_demo.py - 测试用例 |
在这个示例中,我们定义了一个简单的add
函数,它的作用是返回两个数的和。在test_demo.py
中,我们编写测试用例test_add
来验证add
函数的正确性。
2. 运行测试用例
要运行测试用例,我们可以在命令行中使用pytest
命令。确保你所在的目录中包含测试文件,然后运行以下命令:
1 | pytest test_demo.py |
在命令行中,我们将看到类似于以下的输出,显示每个测试的结果:
1 | ============================= test session starts ============================= |
.
表示测试通过,F
表示测试失败。
3. 测试用例命名规则
为确保pytest
能自动识别测试用例,测试文件和函数的命名必须遵循以下规则:
- 测试文件名以
test_
开头或结尾(例如,test_demo.py
)。 - 测试函数名以
test_
开头(例如,test_add
)。
4. 组织测试用例
对于较大项目,测试用例应当按照模块进行合理组织。可以通过在测试目录下创建多个测试文件来实现这一点。例如:
1 | tests/ |
每个测试文件分别负责不同功能模块的测试,让代码更加清晰和易于维护。
5. 使用pytest
的其他特性
5.1. 使用assert
语句
在pytest
中,我们使用assert
语句进行断言。与传统的测试框架中使用的特定断言方法不同,pytest
可以通过内置的assert
机制,自行生成详细的错误报告。
对于以下测试代码:
1 | def test_addition(): |
如果result
不等于5
,pytest
会输出详细的错误信息,包括期望值和实际值,帮助您快速定位问题。
5.2. 跳过和期待失败的测试
在某些情况下,您可能希望跳过某些测试或在测试中预测失败。pytest
提供了相应的标记:
1 |
|
5.3. 使用夹具(Fixtures)
pytest
的夹具是一个强大的特性,可用于在测试执行前设置上下文环境。例如,可以用于提供数据库连接、创建测试数据等:
1 | import pytest |
这段代码使用夹具sample_data
提供了一组数据,并在测试中使用。
结语
在这一节中,我们探讨了pytest
的基础用法,包括如何编写测试用例、运行测试、命名规则、组织测试文件、使用断言、跳过测试、期待失败测试及使用夹具。这些都是构建pytest
测试用例的基础。
在下一节中,我们将介绍pytest
的参数化测试,这是一种提高测试覆盖率和代码简洁性的有效方法,帮助我们消除重复代码。敬请期待!