Pytest 命名规则
同学们大家好,这个章节我们来学习 pytest 框架中的命名规则。
简介
Pytest 以特定规则识别测试用例,所以测试用例文件、测试类以及类中的方法、测试函数这些命名都必须符合规则,才能被 Pytest 识别到并加入测试运行队列中。
如果不遵循 Pytest 的命名规则会导致 Pytest 识别不到测试用例。
Pytest 有严格的命名规则,用来识别测试用例,所以你必须按照它的规则来命名测试文件、类和函数,否则 Pytest 就无法识别到这些测试,举个例子,如果你的测试文件名不是以 test 下划线开头,pytest 就会跳过它。
命名规则
类型 | 规则 |
---|---|
文件 | test_ 开头或 _test 结尾 |
类 | Test 开头 |
方法/函数 | test_ 开头 |
注意:测试类中不可以添加
__init__
构造函数。
Pytest 对命名有三个基本要求:第一文件名必须以 test 下划线开头,或者以下划线 test 结尾;第二类名必须以大写 Test 开头;第三方法或函数名必须以 test 下划线开头。比如,test下划线example.py 是符合规则的文件名,而 TestExample 是符合规则的类名,test下划线case1 是符合规则的函数名。还有一点需要注意,如果定义的是测试类,那么类当中就不可以添加构造函数了,如果加上了,这个类就不会被识别为测试类。
示例:
# 示例:test_example.py
# 类名
class TestExample:
# 方法名
def test_case1(self):
pass
def test_case2(self):
pass
# 函数名
def test_addition():
pass
def test_subtraction():
pass
来看一个例子,假设你有一个文件叫 test example.py,在这个文件里有一个类 TestExample,类中有两个方法 test case1 和 test case2,最后你有两个函数 test addition 和 test subtraction。这种命名方式就是 Pytest 识别测试用例的标准方式。
命名规则的优点
-
自动发现测试用例:Pytest 的命名规则可以让 Pytest 自动发现测试用例,只需按照规定的命名规则编写测试函数或类,Pytest 能够自动识别并执行这些测试。
-
避免冲突和命名混乱:通过统一的命名规则,可以避免测试用例的命名冲突和混乱。每个测试函数或类都有明确的命名前缀,使其与其他函数或类区分开来,有助于测试代码的可读性和维护性。
-
代码结构清晰:命名规则提供了一种规范的测试代码组织方式。测试函数和类的命名约定使得测试用例的层次结构清晰可见,更易于理解和维护。这对于大型项目或有大量测试代码的项目尤为重要。
-
与其他测试框架兼容:许多其他测试框架也采用类似的命名规则,所以如果之前使用过其他测试框架,转换到 Pytest 会更加容易。可以在保持相同的命名约定的同时,切换到 Pytest 并享受其丰富的功能和优势。
遵循 pytest 命名规则的好处有很多。第一,它能自动发现测试用例,你只要按照规则命名,Pytest 会自动识别并运行;第二,统一命名可以避免命名冲突,保持代码清晰;第三,这些规则帮助你保持测试代码结构的清晰,特别是在大项目中;第四,Pytest 的命名规则与其他测试框架也兼容,转换起来更方便。
识别规则
- 如果没有指定目录,默认从当前运行目录开始查找文件。
- 运行文件时,只有符合命名规则的文件才会被运行。
- 在测试文件中查找 Test 开头的类,以及类中以
test_
开头的方法,查找测试文件中test_
开头的函数。
到这里大家可能也会很好奇,pytest 到底是怎么去识别用例的的?下面给大家简单介绍一下。Pytest 在执行测试时,会根据你指定的目录来查找符合规则的测试文件,如果你没有指定目录,它会默认从当前目录开始递归查找。它只会运行符合命名规则的文件。
总结
- Pytest 命名规则。
- Pytest 识别规则。
好啦,关于 pytest 的命令规则先给大家介绍到这里。