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

 更新时间:2021年4月16日 15:00  点击:1758

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标记 内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

[!--infotagslink--]

相关文章

  • Pytest实现setup和teardown的详细使用详解

    这篇文章主要介绍了Pytest实现setup和teardown的详细使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-17
  • Pytest中skip和skipif的具体使用方法

    在实际的测试中,我们经常会遇到需要跳过某些测试用例的情况,pytest提供了skip和ifskip来跳过测试.下面我们就来通过一些例子看看skip和ifskip具体如何使用吧,需要的朋友可以参考下...2021-07-01
  • 浅谈c++性能测试工具google benchmark

    本文将会介绍如何使用模板以及参数生成器来批量生成测试用例,简化繁琐的性能测试代码...2021-06-26
  • 在pycharm中文件取消用 pytest模式打开的操作

    这篇文章主要介绍了在pycharm中文件取消用 pytest模式打开的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-02
  • IntelliJ IDEA 小技巧之Bookmark(书签)的使用

    这篇文章主要介绍了IntelliJ IDEA 小技巧之Bookmark(书签)的使用,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-14
  • meta标记项与导航台排位的关系

    meta的用法   meta是HTML语言中的一个可选的标记项,位于HTML文件的标头部分。在meta标记中定义的文字,在浏览器中并不显示。那么,meta起什么作用呢?  一、m...2016-09-20
  • pytest自动化测试中的fixture的声明和调用

    这篇文章主要为大家介绍了pytest自动化测试中的fixture的声明和调用,文中含有详细示例操作有需要的朋友可以借鉴参考下,希望能够有所帮助...2021-10-09
  • python单测框架之pytest常见用法

    pytest是python的单测框架,使用灵活,插件丰富,本文给大家分享python单测框架之pytest常见用法包括pytest常见的插件,感兴趣的朋友跟随小编一起看看吧...2021-08-19
  • Pytest如何使用skip跳过执行测试

    这篇文章主要介绍了Pytest如何使用skip跳过执行测试,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-08-13
  • Pytest中skip skipif跳过用例详解

    今天给大家带来的是关于Python的相关知识,文章围绕着Pytest中skip skipif跳过用例展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下...2021-07-01
  • Pytest接口自动化测试框架搭建模板

    这篇文章主要介绍了Pytest接口自动化测试框架搭建模板,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-24
  • C#使用for循环移除HTML标记

    大家在项目开发阶段移除文字中的html标记最常用的方法就是使用正则表达式,但是正则表达式不能处理所有的html文档,所以采用迭代方式会更好,下面小编给大家解答下...2020-06-25
  • Pytest allure 命令行参数的使用

    这篇文章主要介绍了Pytest allure 命令行参数的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-18
  • 去除html和php标记的方法--strip_tags

    这个方法可去掉字符串中包含的任何 HTML 及 PHP 的标记字符串,例如: $str = "<html><body><table width=100 border=1><tr><td><img src=''qq-373461091.j...2016-11-25
  • Go语言七篇入门教程七GC垃圾回收三色标记

    这篇文章主要为大家介绍了Go语言教程关于GC垃圾回收三色标记的示例详解,本篇文章是Go语言七篇入门教程系列文章,有需要的朋友可以借鉴参考下,希望能够有所帮助...2021-11-10
  • 详解pytest实现mark标记功能详细介绍

    这篇文章主要介绍了详解pytest实现mark标记功能详细介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-16
  • HTML网页列表标记学习教程

    HTML网页列表标记学习教程. 在html页面中,列表可以起到提纲写领的作用。列表分为两种类型,一是有序列表,一是无序列表。前者用项目符号来标记无序的项目,而后者则使用编号...2016-09-20
  • pytest进阶教程之fixture函数详解

    这篇文章主要给大家介绍了关于pytest进阶教程之fixture函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-28
  • PHP的4种开始和结束标记

    1. <?php echo 'if you want to serve XHTML or XML documents, do like this'; ?> 2. <script language="php"> echo 'some editors (like FrontPage) don't l...2016-11-25
  • 当我试着使用<input type=image>标记时,但$foo

    当送出一个表单时,它可能使用image当成提交按钮,如下面所示: <input SRC="image.gif" NAME="foo"> 当用户按下图片的任一点时,伴随表单传回服务器还包含了二个附加变量 fo...2016-11-25