详解pytest实现mark标记功能详细介绍

 更新时间:2021年04月16日 11:26:26   作者:miki的测试笔记  
这篇文章主要介绍了详解pytest实现mark标记功能详细介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

mark标记

​在实际工作中,我们要写的自动化用例会比较多,也不会都放在一个py文件中,如果有几十个py文件,上百个方法,而我们只想运行当中部分的用例时怎么办?

​pytest提供了一个非常好用的mark功能,可以给测试用例打上各种各样的标签,运行用例时可以指定运行某个标签。mark功能作用就是灵活的管理和运行测试用例。

​标签既可以打到方法上,也可以打到类上,标记的两种方式:

  • 直接标记类或方法或函数:@pytest.mark.标签名
  • 类属性:pytestmark = [pytest.mark.标签名, pytest.mark.标签名],需要注意的是属性名称是固定的
import pytest


@pytest.mark.beta	# 可以给类打标签
class TestLogin:	# 标记类

    @pytest.mark.qc
    @pytest.mark.beta	# 也可以多个标签
    def test_login(self):	# 标记方法
        pass

@pytest.mark.smoke		# 单个标签
def test_register():	# 标记函数
        pass

class TestClass:
    # 加一个 pytestmark的类属性
    pytestmark = [pytest.mark.qc, pytest.mark.beta]	# 标签存放在一个列表

pytest.main()

注册标签名

​我们要想运行已经打好标记的函数,还需要对标签名进行注册,告诉pytest有哪些标签,如果不进行注册运行时(pytest的高级版本)可能会报警告让你进行注册。

​我们只需要在项目根目录下创建一个pytest.ini文件,注意文件名是不可修改的,否则pytest会找不到。内容格式如下:

# pytest.ini
# 只能修改=右边的值
[pytest]	
python_files = demo_*.py	# 模块名以demo_开头
python_functions = demo_*	# 方法名以demo_开头
python_classes = Demo*	# 类名名以Demo开头

# 注册标签
markers =
    qc
    beta
    smoke

运行指定的标签

通过命令行执行

​单个标签:pytest -m "标签名"(-m意思是执行标签mark),不想执行某个标签可以用not来取反,即pytest -m "not 标签名"

​多个标签:可以加上判断,pytest -m "qc and beta" 或者 pytest -m "qc or beta" 效果是一样的

​注意:标签名一定要加双引号,单引号是会报错的。

通过代码执行

​这里普及一下,main()方法是可以接收不定长参数的,因此可以把要执行的命令放在一个列表中

if __name__ == '__main__':
    pytest.main(['-m qc and beta', '-s'])	# 标签名不需要加引号

关于pytest的指令,可以通过控制台执行pytest --help查看,上面举例中-s命令是指打印更加详细的信息,如果程序运行过程当中的print()信息打印不出来,可以加上-s可选参数,它是-- capture=no的缩写。

skip跳过标记

​在维护测试用例的过程中,可能在一个阶段某些用例已经不需要了,或者在指定条件下是不需要运行的,那么我们就可以通过mark.skip跳过这些函数或者类,两种跳过方式:

  • 直接跳过: @pytest.mark.skip(reason = “原因”) ,这里原因是可选参数
  • 条件跳过,即满足某个条件才跳过:@pytest.mark.skipif(a == 1, reason = “原因”)
db_host = 'localhost'

@pytest.mark.skip("和现在的需求不符合")	# 不满足当下了,或别人编写的暂时不能删的
def test_yuz(self):
    pass

@pytest.mark.skipif(db_host == 'localhost', reason='只测试线上环境,不测试本地环境')
def test_develop_env(self):
    pass

到此这篇关于详解pytest实现mark标记功能详细介绍的文章就介绍到这了,更多相关pytest mark标记 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中str.format()方法的具体使用

    Python中str.format()方法的具体使用

    本文主要介绍了Python中str.format()方法的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Linux环境下的Python打包和部署实践

    Linux环境下的Python打包和部署实践

    这篇文章主要介绍了Linux环境下的Python打包和部署实践的相关资料,需要的朋友可以参考下
    2023-11-11
  • 10个Python中python_docx库的实用案例分享

    10个Python中python_docx库的实用案例分享

    在日常办公和文档处理中,Word文档是我们最常用的格式之一,Python通过python - docx库能够实现对Word文档的各种自动化操作,本文为大家准备了10个常用的案例,希望对大家有所帮助
    2025-02-02
  • Python Django模型详解

    Python Django模型详解

    这篇文章主要介绍了Django 模型类(models.py)的定义详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-10-10
  • 教你用pytorch训练五子棋ai示例代码

    教你用pytorch训练五子棋ai示例代码

    这篇文章主要介绍了五个与五子棋相关的Python文件,包括游戏逻辑、神经网络模型、训练代码以及玩家对战代码,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • Python读取文件比open快十倍的库fileinput

    Python读取文件比open快十倍的库fileinput

    fileinput是Python的内置模块,但不少人对它都是陌生的。今天把fileinput的所有的用法、功能进行详细的讲解,并列举一些非常实用的案例,对于理解和使用它可以说完全没有问题
    2021-10-10
  • Python推导式使用详情

    Python推导式使用详情

    这篇文章主要介绍了Python推导式使用详情,推导式是 for 循环的简化使用方法,使用推导式,将一个可迭代对象中的数据遍历到某一个容器当中,下面文章详细介绍需要的小伙伴可以参考一下
    2022-05-05
  • Python实现12种降维算法的示例代码

    Python实现12种降维算法的示例代码

    数据降维算法是机器学习算法中的大家族,与分类、回归、聚类等算法不同,它的目标是将向量投影到低维空间,以达到某种目的如可视化,或是做分类。本文将利用Python实现12种降维算法,需要的可以参考一下
    2022-04-04
  • matplotlib多子图实现共享坐标轴的示例详解

    matplotlib多子图实现共享坐标轴的示例详解

    这篇文章主要为大家详细介绍了matplotlib绘制多子图师如何实现共享坐标轴,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-02-02
  • Python批量处理工作簿和工作表的实现示例

    Python批量处理工作簿和工作表的实现示例

    本文主要介绍了使用Python批量处理工作簿和工作表,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09

最新评论