pytest(3)-测试命名规则
前言
在自动化测试项目中,单元测试框架运行时需要先搜索测试模块(即测试用例所在的.py文件),然后在测试模块中搜索测试类或测试函数,接着在测试类中搜索测试方法,最后加入到队列中,再按执行顺序执行测试。
所以,只有测试模块、测试类/测试函数、测试方法都符合命名规则,框架才能去识别测试用例。
那么,接下来我们来了解 pytest 框架中的测试命名规则。
命名规则
在了解pytest的测试命名规则之前,我们先需要知道 pytest 搜索用例的规则,它默认搜索规则如下:
- 如果pytest执行命令中指定了目录,则从该指定目录中开始查找测试用例文件,如果没有指定,则从当前运行目录开始查找文件,最终的结果是找到整个项目中符合命名规则的测试用例。
- 会查找整个项目中符合命令规则的测试模块,再由 测试模块-->测试类/测试函数-->测试方法 一层一层递归查找。
默认命名规则
pytest 的测试命名规则如下:
- 测试模块:以 test_ 开头命名,如:test_login.py,或以 _test 结尾,如:login_test.py
- 测试类:必须以
Test开头命名,且测试类中不能有 init 方法 - 测试方法/测试函数:必须以test开头,如:test_login() 或 testRegister()
最好是将测试模块、测试方法/函数都以 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自动化项目,命名方式最好如下:
- 测试模块名以test开头,如 test_login.py
- 测试类名以Test开头,如 TestLogin()
- 测试函数/方法名以test开头,如 test_login()
这样的命名方式,既简单又清晰,而自定义命名其实较为少用,除非项目比较特殊。
pytest(3)-测试命名规则的更多相关文章
- Java的书写格式,标识符及命名规则,注释
Java的书写格式,标识符及命名规则,注释 1.Java语言的书写格式(约定成俗) 1) 大括号要对齐(左大括号与句尾对其,后面大括号与句头对齐),并且成对写 2) 左大括号前面有空格 3) 遇到左大 ...
- JavaWeb 命名规则
命名规范命名规范命名规范命名规范 本规范主要针对java开发制定的规范项目命名项目命名项目命名项目命名 项目创建,名称所有字母均小写,组合方式为:com.company.projectName.com ...
- 详解 Python 中的下划线命名规则
在 python 中,下划线命名规则往往令初学者相当 疑惑:单下划线.双下划线.双下划线还分前后……那它们的作用与使用场景 到底有何区别呢?今天 就来聊聊这个话题. 1.单下划线(_) 通常情况下,单 ...
- C语言命名规则
一.程序风格: 1.严格采用阶梯层次组织程序代码: 各层次缩进的分格采用VC的缺省风格,即每层次缩进为4格,括号位于下一行. 要求相匹配的大括号在同一列,对 ...
- c语言命名规则 [转载]
C语言变量名命名规则 一.程序风格: 1.严格采用阶梯层次组织程序代码: 各层次缩进的分格采用VC的缺省风格,即每层次缩进为4格,括号位于下一行. 要求相匹配的 ...
- Visual C++编程命名规则
一.程序风格: 1.严格采用阶梯层次组织程序代码: 各层次缩进的分格采用VC的缺省风格,即每层次缩进为4格,括号位于下一行.要求相匹配的大括号在同一列,对继行则要求再缩进4格.例如 ...
- [JAVA第二课] java命名规则
Java良好的命名规则以及代码风格可以看出来一个程序员的功底,好多公司也会注重这方面,他们招聘员工在有些时候往往就是根据一个人的代码风格来招人,所以下面就就我知道的代码风格作简要的说明一下.Java命 ...
- 修改织梦默认栏目页、文章页URL命名规则,简化目录结构
版权声明:本文为博主原创文章,未经博主允许不得转载. 用织梦Dedecms建站,建议优化系统默认的URL结构,这样能简化网站目录深度,利于搜索引擎收录. 现在织梦的默认文章命名规则是 {typedir ...
- Java编译后产生class文件的命名规则
今天刚好有同学问了下Java编译后产生的.class文件名的问题,虽然一直都在使用Java做开发,但是之前对编译后产生的.class文件名的规范也基本没做了解过,也真的是忏愧啊!今天无论如何都要总结下 ...
随机推荐
- No shutdown animation in the electricity display only 1%
低电量自动关机时无关机动画 低电量自动关机时无关机动画1. 问题描述2. 分析3. solution4. 总结 1. 问题描述 DEFECT DESCRIPTION: No shutdown anim ...
- 【Java常用类】System
System System类代表系统,系统级的很多属性和控制方法都放置在该类的内部. 该类位于java.lang包.由于该类的构造器是private的,所以无法创建该类的对象,其内部的成员变量和成员方 ...
- Hello world.java
Hello world 1.随便新建一个文件夹,存放源代码 2.新建一个Java文件 文件后缀名为.java Hello.java [注意点]系统可能显示没有后缀名,我们需要手动打开 3.编写代码 p ...
- 《剑指offer》面试题34. 二叉树中和为某一值的路径
问题描述 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径.从树的根节点开始往下一直到叶节点所经过的节点形成一条路径. 示例: 给定如下二叉树,以及目标和 sum = 22, 5 ...
- 🏆【Alibaba中间件技术系列】「Nacos技术专题」配置中心加载原理和配置实时更新原理分析(上)
官方资源 https://nacos.io/zh-cn/docs/quick-start.html Nacos之配置中心 动态配置管理是 Nacos的三大功能之一,通过动态配置服务,可以在所有环境中以 ...
- synergy最佳解决方案——barrier
synergy最佳解决方案--barrier 不知道大家有没有一套键盘鼠标控制多台电脑的需求,主流的硬件或说软件有大神整理如下: 软件方案: Windows 之间:Mouse Without Bo ...
- tep0.9.5支持自定义扩展request
tep0.9.5更新了以下内容: 自定义request请求日志 Allure报告添加request描述 猴子补丁扩展request fixtures支持多层级目录 FastAPI替代Flask 升级t ...
- Casbin + Gin + Gorm 学习探索
Casbin 是一个强大的,开源的访问控制框架,权限管理机制支持多种访问控制模型: 并且支持多种编程语言: 文档地址:https://casbin.org/docs/zh-CN/overview Gi ...
- kubernetes之手动部署k8s 1.14.1高可用集群
1. 架构信息 系统版本:CentOS 7.6 内核:3.10.0-957.el7.x86_64 Kubernetes: v1.14.1 Docker-ce: 18.09.5 推荐硬件配置:4核8G ...
- APP 性能分析工作台——你的最佳桌面端性能分析助手
目前 MARS-App 性能分析工作台版本为开发者提供Fastbot桌面版的服务. 旨在帮助开发者们更快.更便捷地开启智能测试之旅,成倍提升稳定性测试的效率. 作者:字节跳动终端技术--王凯 背景 F ...