在自动化测试项目中,单元测试框架运行时需要先搜索测试模块(即测试用例所在的.py文件),然后在测试模块中搜索测试类或测试函数,接着在测试类中搜索测试方法,最后加入到队列中,再按执行顺序执行测试。
所以,只有测试模块、测试类/测试函数、测试方法都符合命名规则,框架才能去识别测试用例。
那么,接下来我们来了解 pytest 框架中的测试命名规则。
在了解pytest的测试命名规则之前,我们先需要知道 pytest 搜索用例的规则,它默认搜索规则如下:
默认命名规则
pytest 的测试命名规则如下:
Test
开头命名,且测试类中不能有 init 方法最好是将测试模块、测试方法/函数都以 test_ 开头命名,这样可读性更强,如下图:
自定义命名规则
pytest 框架可以通过pytest.ini
配置文件自定义命名规则,在某些特定场景下可能会用到。
在测试项目的根目录下创建pytest.ini
文件,并进行如下配置:
- [pytest]
- # 更改测试模块命名规则
- python_files = CS*
- # 更改测试类命名规则
- python_classes = CS*
- # 更改测试方法/测试函数命名规则
- python_functions = CS*
注意,在.ini文件中直接使用中文注释执行的时候会报错,实际使用如上代码时,需要将中文注释去掉。
新建测试模块CS_register.py
,示例如下:
- import pytest
- import requests, json
-
- class CSRegister:
-
- def CS_register(self):
- '''注册用户'''
- headers = {"Content-Type": "application/json;charset=utf8"}
- url = "http://127.0.0.1:5000/register"
- data = {
- "username": "张学友",
- "password": "123456",
- "sex": "0",
- "telephone": "13823456789",
- "address": "北京东城区"
- }
- res = requests.post(url=url, headers=headers, json=data).text
- res = json.loads(res)
- assert res['code'] == 0
-
-
- if __name__ == '__main__':
- pytest.main()
执行结果如下:
除非是特殊情况,否则不太建议自定义命名规则。
从个人实际经验来看,不管是pytest
还是unittest
自动化项目,命名方式最好如下:
这样的命名方式,既简单又清晰,而自定义命名其实较为少用,除非项目比较特殊。
群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。
项目实战:
大型电商平台:
全套软件测试自动化测试教学视频
300G教程资料下载【视频教程+PPT+项目源码】
全套软件测试自动化测试大厂面经
python自动化测试++全套模板+性能测试
听说关注我并三连的铁汁都已经升职加薪暴富了哦!!!!