网络编程
位置:首页>> 网络编程>> 网络编程>> 详解pytest实现mark标记功能详细介绍

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

作者:miki的测试笔记  发布时间:2022-01-16 23:59:48 

标签: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会找不到。内容格式如下:


# 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" 效果是一样的

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

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

通过代码执行

这里普及一下,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

来源:https://www.cnblogs.com/miki-peng/p/14644650.html

0
投稿

猜你喜欢

  • 目录一、基本用法二、计数循环三、字符串遍历循环四、列表遍历循环五、文件遍历循环六、遍历循环的扩展模式一、基本用法for <循环变量&g
  • 本文实例讲述了Django框架表单操作。分享给大家供大家参考,具体如下:HTML表单是网站交互性的经典方式。 开始学习如何用Django对用
  • 许多网站缺乏针对性和友好的导航设计,难以找到连接到相关网页的路径,也没有提供有助于让访客/用户找到所需信息的帮助,用户体验非常糟糕。本期薯片
  • 申明本博客不提供任何服务器端程序,也不提供任何收费抢购软件。该博客仅用于学习selenium自动化工具。如有侵犯到任何公司的合法权益,请私信
  • 本文会介绍一些Python大神用的贼溜的技巧,让一探究竟吧!欢迎收藏学习,喜欢点赞支持,欢迎畅聊。整理字符串输入整理用户输入的问题在编程过程
  • 本期我们将展示一种对路面类型和质量进行分类的方法及其步骤。为了测试这种方法,我们使用了我们制作的RTK数据集。路面分类该数据集[1]包含用低
  • 有时候在测试django中一些模块时,不想重新跑一整个django项目,只想跑单个文件,正好写在if __name__ == '__
  • 和单选框一样,许多新手在用 Javascript 验证表单(form)中多选框(checkbox)的值时,都会遇到问题,原因是 checkb
  • 近日,有关微软Open XML标准的问题又引发了某些业内人士的关注。其一是因为日前ISO(国际标准组织)成员南非和巴西相继就ISO批准微软的
  • Pynimate介绍Pynimate是python第三方用于动态可视化的数据模块。安装pip install pynimate实验示例fro
  • 基于Ubuntu16.04 + Python3 + nginx + mysql + Django接下来先安装这些必要的环境,这些操作都是在你
  • 简介想看看你最近一年都在干嘛?看看你平时上网是在摸鱼还是认真工作?想写年度汇报总结,但是苦于没有数据?现在,它来了。这是一个能让你了解自己的
  • IPython + ptpython,完美体验首先是安装pip install ipython ptpython然后使用ptipython有
  • Pandas中根据列的值选取多行数据 # 选取等于某些值的行记录 用 == df.loc[df['column_name']
  • 用VBS语言实现的一个简单网页计算器,功能:可以进行加法、减法、乘法、除法、取反、开根号、及指数运算。虽然简单但是比起windows xp自
  • 数据库(DataBase,DB)是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。通俗地说,数据库就是一个按照数据结构来组
  • 前言加密技术在数据安全存储,数据传输中发挥着重要作用,能够保护用户隐私数据安全,防止信息窃取。RSA是一种非对称加密技术,在软件、网页中已得
  • delattr 函数用于删除属性。delattr(x, 'foobar') 相等于 del x.foobar。语法setat
  • 本章给大家在项目使用时候,常见的一种情况解决案例,即是当我们调用多个线程,使用了同一个函数去处理数据的时候,有些用函数已经处理完成,但是有些
  • 密码强度是一个很普遍的功能,比较简单,主要是怎么制定这个强度规则。现在需要升级密码强度的验证,以前的验证比较简单,现在已经不能满足需求了,现
手机版 网络编程 asp之家 www.aspxhome.com