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

(0)

相关推荐

  • 在pycharm中文件取消用 pytest模式打开的操作

    pycharm的pytest功能 在新建一个python文件时,比如名称是test_test_test.py,由于含有test,pycharm可能自动将允许模式设置为pytest.可以由于没有pytest模块,不能执行,如何取消pytest模式呢? 1.进入运行–>编辑配置,可以看到 Python tests下面有一个小叉叉,是由于环境中没有pytest模块.点击上面的"-"图标,可以删除"pytest in test_test_test.py"这一行. 2.

  • python pytest进阶之fixture详解

    前言 学pytest就不得不说fixture,fixture是pytest的精髓所在,就像unittest中的setup和teardown一样,如果不学fixture那么使用pytest和使用unittest是没什么区别的(个人理解). fixture用途 1.做测试前后的初始化设置,如测试数据准备,链接数据库,打开浏览器等这些操作都可以使用fixture来实现 2.测试用例的前置条件可以使用fixture实现 3.支持经典的xunit fixture ,像unittest使用的setup和te

  • Pytest参数化parametrize使用代码实例

    这篇文章主要介绍了Pytest参数化parametrize使用代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在测试用例的前面加上: @pytest.mark.parametrize("参数名",列表数据) 参数名:用来接收每一项数据,并作为测试用例的参数. 列表数据:一组测试数据. 示例代码: import pytest test_datas = [ (11, 22, 33), (22, 33, 55) ] datas_di

  • Pytest测试框架基本使用方法详解

    pytest介绍 pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点: 1.简单灵活,容易上手,文档丰富: 2.支持参数化,可以细粒度地控制要测试的测试用例: 3.能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试.接口自动化测试(pytest+requests); 4.pytest具有很多第三方插件,并且可以自定义扩展 如pytest-selenium(集成selenium). pytest-html(完美html测试报告

  • Python 测试框架unittest和pytest的优劣

    一.Unittest Unittest是Python标准库中自带的单元测试框架,Unittest有时候也被称为PyUnit,就像JUnit是Java语言的标准单元测试框架一样,Unittest则是Python语言的标准单元测试框架. Unittest支持自动化测试,测试用例的初始化.关闭和测试用例的聚合等功能,它有一个很重要的特性:它是通过类(class)的方式,将测试用例组织在一起. 示例: 运行结果 注:unittest有一个关联模块unittest2,但unittest2仅适用于Pytho

  • pytest中文文档之编写断言

    编写断言 使用assert编写断言 pytest允许你使用python标准的assert表达式写断言: 例如,你可以这样做: # test_sample.py def func(x): return x + 1 def test_sample(): assert func(3) == 5 如果这个断言失败,你会看到func(3)实际的返回值: /d/Personal Files/Python/pytest-chinese-doc/src (5.1.2) λ pytest test_sample.

  • python pytest进阶之conftest.py详解

    前言 前面几篇文章基本上已经了解了pytest 命令使用,收集用例,finxture使用及作用范围,今天简单介绍一下conftest.py文件的作用和实际项目中如是使用此文件! 实例场景 首先们思考这样一个问题:如果我们在编写测试用的时候,每一个测试文件里面的用例都需要先登录后才能完成后面的操作,那么们该如何实现呢?这就需要我们掌握conftest.py文件的使用了. 实例代码 创建如下一个目录 ConftestFile |conftest.py |test_file_01.py |test_f

  • 详解用Pytest+Allure生成漂亮的HTML图形化测试报告

    对于软件测试工作来说,测试报告是非常重要的工作产出.一个漂亮.清晰.格式规范.内容完整的测试报告,既能最大化我们的测试工作产出,又能够减少开发人员和测试人员的沟通成本. 本篇文章将介绍如何使用开源的测试报告生成框架Allure生成规范.格式统一.美观的测试报告. 通过这篇文章的介绍,你将能够: 将Allure与Pytest测试框架相结合: 如何定制化测试报告内容 执行测试之后,生成Allure格式的测试报告. 如何与Jenkins集成. 将测试环境信息展示到测试报告中. 1.Allure测试报告

  • python的pytest框架之命令行参数详解(上)

    前言 pytest是一款强大的python自动化测试工具,可以胜任各种类型或者级别的软件测试工作.pytest提供了丰富的功能,包括assert重写,第三方插件,以及其他测试工具无法比拟的fixture模型.pytest是一个软件测试框架,是一款命令行工具,可以自动找到测试用例执行,并且回报测试结果.有丰富的基础库,可以大幅度提高用户编写测试用例的效率.具备扩展性,用户可以自己编写插件,或者安装第三方提供的插件.可以很容易地与其他工具集成到一起使用.比如持续集成,web自动化测试等. 下面列举了

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

    mark标记 ​在实际工作中,我们要写的自动化用例会比较多,也不会都放在一个py文件中,如果有几十个py文件,上百个方法,而我们只想运行当中部分的用例时怎么办? ​pytest提供了一个非常好用的mark功能,可以给测试用例打上各种各样的标签,运行用例时可以指定运行某个标签.mark功能作用就是灵活的管理和运行测试用例. ​标签既可以打到方法上,也可以打到类上,标记的两种方式: 直接标记类或方法或函数:@pytest.mark.标签名 类属性:pytestmark = [pytest.mark.

  • 详解Pytest测试用例的执行方法

    pytest概述 pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点: 1.简单灵活,容易上手,文档丰富: 2.支持参数化,可以细粒度地控制要测试的测试用例: 3.能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试.接口自动化测试(pytest+requests); 4.pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium).pytest-html(完美html

  • 详解pytest+Allure搭建方法以及生成报告常用操作

    目录 一.Allure搭建 1.下载Allure安装包 2.安装allure-pytest库 3.配置allure环境变量 4.检验allure安装成功 二.allure生成报告代码 1.allure指定用例严重等级: 2.allure指定标记的测试用例执行 3.生成报告代码 一.Allure搭建 1.下载Allure安装包 链接:https://github.com/allure-framework/allure2/releases 2.安装allure-pytest库 cmd命令行输入命令:

  • Flyway详解及Springboot集成Flyway的详细教程

    Flayway是一款数据库版本控制管理工具,,支持数据库版本自动升级,Migrations可以写成sql脚本,也可以写在java代码里:不仅支持Command Line和java api ,也支持Build构建工具和Spring boot,也可以在分布式环境下能够安全可靠安全地升级数据库,同时也支持失败恢复. Flyway最核心的就是用于记录所有版本演化和状态的MetaData表,Flyway首次启动会创建默认名为SCHEMA_VERSION的元素局表. 表中保存了版本,描述,要执行的sql脚本

  • Pytest自定义mark标记筛选用例

    如下图所示,我们编写的用例存放在不同的py文件当中 当我们想只运行诸多py文当中的部分用例,怎么办呢? 比如自动化工作当中,选择test_a,test_33,test_000这3个用例来运行的话,如何过滤呢? pytest.mark一下 在pytest当中,先给用例打标记,在运行时,通过标记名来过滤测试用例. 步骤1:给用例打标签 给用例打标记分为2个步骤: 1)注册标签名 官方提供的注册方式有2种,这里只提供一种最简单直接的方式: 通过pytest.ini配置文件注册.在pytest.ini文

  • 详解OpenCV执行连通分量标记的方法和分析

    目录 1.OpenCV 连通分量标记和分析 1.1 OpenCV 连通分量标记和分析函数 1.2 项目结构 2.案例实现 2.1 使用 OpenCV 实现基本的连通分量标记 2.2 完整代码 2.3 过滤连通分量 2.4 C++代码案例 在本教程中,您将学习如何使用 OpenCV 执行连通分量标记和分析.具体来说,我们将重点介绍 OpenCV 最常用的连通分量标记函数:cv2.connectedComponentsWithStats. 连通分量标记(也称为连通分量分析.斑点提取或区域标记)是图论

  • 对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍

    一. 什么是 CSRF ? CSRF是Cross Site Request Forgery的缩写,看起来和XSS差不多的样子,但是其原理正好相反,XSS是利用合法用户获取其信息,而CSRF是伪造成合法用户发起请求.具体操作原理看google.. 二.Laravel的CSRF防御过程 Laravel 会自动在用户 session (根据session_id 关联确认属于谁) 生成存放一个随机令牌(token)放在session中,并且如果使用 Laravel 的 {{form::open}} 会自

  • 详解pytorch中squeeze()和unsqueeze()函数介绍

    squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的数去掉第一个维数为一的维度之后就变成(3)行.squeeze(a)就是将a中所有为1的维度删掉.不为1的维度没有影响.a.squeeze(N) 就是去掉a中指定的维数为一的维度.还有一种形式就是b=torch.squeeze(a,N) a中去掉指定的定的维数为一的维度. 再看torch.unsque

  • Spring ApplicationContext接口功能详细介绍

    第一步,我们先来看这个接口的内部结构,了解别人的内部,知己知彼,百战不殆: 这个接口的扩展功能主要体现在它继承的四个接口上: MessageSource:国际化功能 ResourcePatternResolver: 资源访问功能 ApplicationEventPublisher: Spring事件发布者功能 EnvironmentCapable:提供当前系统环境 Environment 组件功能 国际化功能演示 查看对应的方法: 准备翻译资源信息: --------messages_en.pr

  • 详解vue 图片上传功能

    这次做了vue页面的图片上传功能,不带裁剪功能的! 首先是html代码,在input框上添加change事件,如下: <ul class="clearfix"> <li v-if="imgs.length>0" v-for='(item ,index ) in imgs'> <img :src="item"> </li> <li style="position:relative

随机推荐