如果想从头学起pytest,可以去看看这个系列的文章!

https://www.cnblogs.com/miki-peng/category/1960108.html

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标记功能详细介绍的更多相关文章

  1. Java 集合系列11之 Hashtable详细介绍(源码解析)和使用示例

    概要 前一章,我们学习了HashMap.这一章,我们对Hashtable进行学习.我们先对Hashtable有个整体认识,然后再学习它的源码,最后再通过实例来学会使用Hashtable.第1部分 Ha ...

  2. 【转】Java 集合系列11之 Hashtable详细介绍(源码解析)和使用示例

    概要 前一章,我们学习了HashMap.这一章,我们对Hashtable进行学习.我们先对Hashtable有个整体认识,然后再学习它的源码,最后再通过实例来学会使用Hashtable.第1部分 Ha ...

  3. Java 集合系列07之 Stack详细介绍(源码解析)和使用示例

    概要 学完Vector了之后,接下来我们开始学习Stack.Stack很简单,它继承于Vector.学习方式还是和之前一样,先对Stack有个整体认识,然后再学习它的源码:最后再通过实例来学会使用它. ...

  4. Java 集合系列10之 HashMap详细介绍(源码解析)和使用示例

    概要 这一章,我们对HashMap进行学习.我们先对HashMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用HashMap.内容包括:第1部分 HashMap介绍第2部分 HashMa ...

  5. 【转】 Java 集合系列07之 Stack详细介绍(源码解析)和使用示例

    概要 学完Vector了之后,接下来我们开始学习Stack.Stack很简单,它继承于Vector.学习方式还是和之前一样,先对Stack有个整体认识,然后再学习它的源码:最后再通过实例来学会使用它. ...

  6. Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例

    概要  前面,我们已经学习了ArrayList,并了解了fail-fast机制.这一章我们接着学习List的实现类——LinkedList.和学习ArrayList一样,接下来呢,我们先对Linked ...

  7. Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例

    概要 这一章,我们对TreeMap进行学习.我们先对TreeMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用TreeMap.内容包括:第1部分 TreeMap介绍第2部分 TreeMa ...

  8. 【转】Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例

    概要 这一章,我们对TreeMap进行学习.我们先对TreeMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用TreeMap.内容包括:第1部分 TreeMap介绍第2部分 TreeMa ...

  9. Ubuntu根目录下各文件夹的功能详细介绍

    Ubuntu的根目录下存在着很多的文件夹,但你知道他们都存放着哪些文件呢?这些是深入了解Ubuntu系统必不缺少的知识,本文就关于此做一下介绍吧. /bin/    用以存储二进制可执行命令文件. / ...

随机推荐

  1. C# 应用 - 多线程 2) Thread 和 ThreadPool

    IEnumerable<int> intList = Enumerable.Range(1, 15); foreach (int i in intList) { ThreadPool.Qu ...

  2. 策略模式在PHP业务代码的实践

    [大话设计模式]-- 策略者模式(Strategy):它定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变法,不会影响到使用算法的客户. 策略模式的核心就是屏蔽内部策略算法,内部的 ...

  3. subprocess如何设置命令超时时间

    一.subprocess如何设置命令超时时间 最近遇到一个问题,就是我需要在服务器上执行某些shell命令,但是有些命令失败的时候是不会自动终止的,只会一直停在那里,很耗时间. 因此想到了设置超时时间 ...

  4. HiveHA机制源码分析

    hive让大数据飞了起来,不再需要专人写MR.平常我们都可以用基于thrift的任意语言来调用hive. 不过爱恨各半,hive的thrift不稳定也是出了名的.很容易就出问题,让人无计可施.唯一的办 ...

  5. gtk+2.0中函数set_widget_font_size()函数在编译时未定义的解决办法

    自己写一个头文件即可,代码如下: 在.c文件中包含该头文件即可

  6. ch2_8_2求解幸运数问题

    思路:f(x)进行十进制每位相加,g(x)进行二进制每位相加,比较是否相等即可. 小明同学学习了不同的进制之后,拿起了一些数字做起了游戏.小明同学知道,在日常生活中我们最常用的是十进制数,而在计算机中 ...

  7. 真会C#微信小程序的习题数据JSON文件下载链接

    完全没有精力去维护了,所以小程序停掉,集中精力做一件事. 链接: https://pan.baidu.com/s/1xL45KxDzR5oEQM6nwBA5rw 提取码: qv6n

  8. java例题_44 一个偶数总能表示为两个素数之和

    1 /*44 [程序 44 偶数的素数和] 2 题目:一个偶数总能表示为两个素数之和. 3 */ 4 5 /*分析 6 * 1.从键盘得到一个偶数(大于2的偶数,因为1不是素数) 7 * 2.用for ...

  9. Java类集框架详细汇总-底层分析

    前言: Java的类集框架比较多,也十分重要,在这里给出图解,可以理解为相应的继承关系,也可以当作重要知识点回顾: Collection集合接口 继承自:Iterable public interfa ...

  10. 面试关于Spring循环依赖问题,我建议你这么答!

    写在前面 在关于Spring的面试中,我们经常会被问到一个问题:Spring是如何解决循环依赖的问题的. 这个问题算是关于Spring的一个高频面试题,因为如果不刻意研读,相信即使读过源码,面试者也不 ...