对测试用例打标签,在运行测试用例的时候,可根据标签名来过滤要运行的用例。

一、注册标签名

1.创建pytest.ini文件,在文件中按如下方式添加标签名:

[pytest]
markers =
smoke:marks tests as smoke.
demo:marks tests asa demo.

备注:冒号之后是描述信息(可写可不写)。

2.在conftest.py文件当中,通过hock注册:

def pytest_configure(config):
config.addinivalue_line("markers", "smoke:标记只运行冒烟用例")
config.addinivalue_line("markers", "demo:标记只运行示例用例")

二、打标签

打标记的范围:测试用例、测试类、模块文件

1.方法一

在测试用例/测试类前加上:@pytest.mark.标记名

import pytest

@pytest.mark.smoke
def test_add_01():
b = 1 + 2
assert 3 == b @pytest.mark.demo
def test_add_02():
b = 1 + 2
assert 0 == b @pytest.mark.smoke
class TestAdd: def test_add_03(self):
b = 1 + 2
assert 3 == b def test_add_04(self):
b = 1 + 1
assert 2 == b

也可以在一个用例上打多个标签,多次使用@pytest.mark.标签名

@pytest.mark.demo
@pytest.mark.smoke
def test_add_02():
b = 1 + 2
assert 0 == b

2.方法二

  • 在测试类里面,使用以下声明(测试类下,所有用例都被打上了该标签):
@pytest.mark.demo
def test_add_02():
b = 1 + 2
assert 0 == b class TestAdd: pytestmark = pytest.mark.smoke def test_add_03(self):
b = 1 + 2
print(f'b={b}')
assert 3 == b def test_add_04(self):
b = 1 + 1
print(f'b={b}')
assert 2 == b

多标签模式:pytestmark = [pytest.mark.标签1, pytest.mark.标签2......]

class TestAdd:

    pytestmark = [pytest.mark.smoke, pytest.mark.demo]

    def test_add_03(self):
b = 1 + 2
print(f'b={b}')
assert 3 == b def test_add_04(self):
b = 1 + 1
print(f'b={b}')
assert 2 == b
  • 在模块文件里,同理(py文件下,所有测试函数和测试类里的测试函数,都有该标签):
import pytest
pytestmark = pytest.mark.smoke
pytestmark = [pytest.mark.smoke, pytest.mark.demo] # 多标签模式

三、命令行

根据测试用例/测试类/测试模块,标记了对应的标签后,使用对应的命令行在cmd中或者Pycharm中的Terminal中运行,即可进行用例的筛选,命令行为:

pytest -m 标签名

四、pytest收集测试用例的规则

1.默认从当前目录中收集测试用例,即在哪个目录下运行pytest命令,则从哪个目录当中搜索

2.搜索规则:

  符合命名规则test_*.py 或者 *_test.py的文件

  以test开头的函数名

  以Test开头的测试类(没有__init__方法)当中,以test_开头的方法

pytest框架之mark标签的更多相关文章

  1. pytest框架-介绍、Mark(打标签)、命令运行用例、用例执行顺序、

    1.pytest介绍:基于unittest 之上的单元测试框架 1.1.自动发现测试模块和测试用例: unitest 需要添加用例,(泰斯特楼贷)加载器加载测试用例 pytest 只需要一条代码就可以 ...

  2. 『德不孤』Pytest框架 — 6、Mark分组执行测试用例

    目录 1.Pytest中的Mark介绍 2.Mark的使用 3.Mark的注册和使用 4.使用Mark完成失败重试 5.扩展 1.Pytest中的Mark介绍 Mark主要用于在测试用例/测试类中给用 ...

  3. pytest框架使用教程

    Pytest框架 一.简介 pytest:基于unittest之上的单元测试框架 有什么特点? 自动发现测试模块和测试方法 断言更加方便,assert + 表达式,例如 assert 1 == 1 灵 ...

  4. pytest框架的安装与使用

    pytest框架的安装与使用 一,pytest了解 pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高. ...

  5. pytest框架之fixture详细使用

    本人之前写了一套基于unnitest框架的UI自动化框架,但是发现了pytest框架之后觉得unnitest太low,现在重头开始学pytest框架,一边学习一边记录,和大家分享,话不多说,那就先从p ...

  6. pytest 框架自动化Selenium 之yield 使用

    环境 python 3.7 由于3.0-3.5以下部分pytest可能有部分兼容问题安装建议2.7-2.9,3.5-最新 pip install pytest专属 pytest框架包 pip inst ...

  7. pytest框架之rerunfailures失败重运行机制

    web自动化测试中,稳定性在整个测试运行中都至关重要,但不能保证测试脚本或者测试环境一直都能够稳定,它牵扯到诸多因素,在这里就不赘述,pytest框架相较于unittest的一大优势就在于拥有用例失败 ...

  8. 『德不孤』Pytest框架 — 1、Pytest测试框架介绍

    目录 1.什么是单元测试框架 2.单元测试框架主要做什么 3.单元测试框架和自动化测试框架有什么关系 4.Pytest测试框架说明 5.Pytest框架和Unittest框架区别 (1)Unittes ...

  9. 『德不孤』Pytest框架 — 3、Pytest的基础说明

    目录 1.Pytest参数介绍 2.Pytest框架用例命名规则 3.Pytest Exit Code说明 4.pytest.ini全局配置文件 5.Pytest执行测试用例的顺序 1.Pytest参 ...

随机推荐

  1. USB OTG ID 检测原理【转】

    OTG 检测的原理是: USB OTG标准在完全兼容USB2.0标准的基础上,增添了电源管理(节省功耗)功能,它允许设备既可作为主机,也可作为外设操作(两用OTG).USB OTG技术可实现没有主机时 ...

  2. CentOS自动化安装LAMP脚本

    #!/bin/bash #-- #blog:lizhenliang.blog.51cto.com ########## function ########## depend_pkg () { yum ...

  3. CALL和RET指令实验

    实验10 1.在屏幕8行3列,用绿色显示data段中的字符串 assume cs:code data segment db data ends code segment start: ;行 ;列 ;颜 ...

  4. 埃氏筛法(求n以内有哪些个质数)

    核心思想:从i=2开始,划去i的倍数,即剩下i为质数(如删去2的倍数后2为质数,再删去3的倍数后3为质数,4被删除则跳过,5未被删除则记录然后删除5的倍数...以此类推) #include <b ...

  5. jQuery-跨域问题的处理

    调用登录接口时,后端一般会在调用登录接口成功后,在response中设置cookie,之后前端的每次请求都会自动地在请求头上加上后端设置好的cookie,这对前端来说是透明的. 当登录接口与登录后调用 ...

  6. PHP 核心特性 - 错误处理

    错误与异常 错误,可以理解程序本身的错误,例如语法错误.而异常则更偏向于程序运行不符合预期或者不符合正常流程:对于 PHP 语言而言,处理错误和处理异常使用的机制完全不同,因此很容易让人产生困惑. 例 ...

  7. jquery选择器之模糊匹配

    模糊匹配主要分为前导模糊匹配,后导模糊匹配和全文模糊匹配. 前导模糊匹配[^=] 例子:选择name前缀为aa的所有div的jQuery对象. $("div[name^='aa']" ...

  8. AQS(AbstractQueuedSynchronizer)解析

    AbstractQueuedSynchronizer是JUC包下的一个重要的类,JUC下的关于锁相关的类(如:ReentrantLock)等大部分是以此为基础实现的.那么我们就来分析一下AQS的原理. ...

  9. Go-获取变量数据类型

    package main import ( "fmt" "reflect" //这个包里的TypeOf方法获取变量数据类型 ) func main(){ b : ...

  10. ThinkPHP6框架的下载与安装

    thinkphp6发布也有一段时间了,相对来说比较稳定,是时候学习一下thinkphp6框架,提前学习,到正式发布的时候,可以直接拿来做正式的项目,先人一步.thinkPHP6.0在5.1的基础上对底 ...