pytest测试框架
pytest规则
PyTest是一个灵活的测试框架,具有一些约定和规则,以便更容易编写和运行测试。以下是PyTest的一些主要规则和约定:
-
测试文件的命名规则:
- 测试文件应以
test_
开头,并以.py
结尾。例如,test_example.py
。
- 测试文件应以
-
测试函数的命名规则:
- 测试函数应以
test_
开头,例如,test_case_name
。
- 测试函数应以
-
自动发现测试:
- PyTest会自动查找和执行测试文件和测试函数。不需要显式注册测试用例。
-
断言:
- 使用标准的Python
assert
语句来进行断言。例如,assert result == expected
。
- 使用标准的Python
-
参数化测试:
- 使用
@pytest.mark.parametrize
装饰器来实现参数化测试。这使得可以在多组输入值上运行同一测试用例。
- 使用
-
测试标记:
- 使用
@pytest.mark
装饰器为测试用例添加标记,例如,@pytest.mark.smoke
或@pytest.mark.skip
。这些标记可以用于自定义测试运行。
- 使用
-
命令行参数:
- 使用命令行参数来控制测试的行为。例如,
pytest -k keyword
可以运行包含特定关键字的测试用例。
- 使用命令行参数来控制测试的行为。例如,
-
测试运行顺序:
- 默认情况下,PyTest不保证测试的运行顺序。如果需要按顺序运行测试,可以使用
-k
参数或自定义插件。
- 默认情况下,PyTest不保证测试的运行顺序。如果需要按顺序运行测试,可以使用
-
测试夹具(Fixtures):
- 使用
@pytest.fixture
装饰器创建测试夹具,用于在测试用例之间共享初始化和清理代码。
- 使用
-
自定义测试报告:
- 可以使用PyTest插件来生成自定义的测试报告,例如
pytest-html
生成HTML报告。
- 可以使用PyTest插件来生成自定义的测试报告,例如
-
插件扩展:
- PyTest支持大量的插件,可以用于扩展测试框架的功能,如参数化、分布式测试、并行测试、测试覆盖率等。
-
模块级别的配置:
- 使用
conftest.py
文件来定义测试项目级别的配置和夹具。这些配置可以在整个项目中共享。
- 使用
-
跳过测试用例:
- 使用
@pytest.mark.skip
或条件判断来跳过某些测试用例。
- 使用
-
重试失败的用例:
- 使用
@pytest.mark.flaky(reruns=N)
来标记测试用例,PyTest将尝试重新运行失败的用例最多N次。
- 使用
这些规则和约定使PyTest成为一个强大且易于使用的测试框架,但你也可以根据项目的具体需求扩展和自定义它。了解这些基本规则将有助于更好地组织和编写测试用例。