前言

什么是元数据?元数据是关于数据的描述,存储着关于数据的信息,为人们更方便地检索信息提供了帮助。

pytest 框架里面的元数据可以使用 pytest-metadata 插件实现。文档地址https://pypi.org/project/pytest-metadata/

pytest-metadata 环境准备

使用 pip 安装 pytest-metadata

pip install pytest-metadata

查看 pytest 元数据

使用pytest 执行用例的时候加上 -v 参数(或--verbose),在控制台输出报告的头部就会输出元数据(metadata)

>pytest --verbose
============================= test session starts =============================
platform win32 -- Python 3.6.0, pytest-4.5.0, py-1.5.4, pluggy-0.13.1 -- e:\python36\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.6.0', 'Platform': 'Windows-10-10.0.17134-SP0', 'Packages': {'pytest': '4.5.0', 'py': '1.5.4', 'pluggy': '0.13.1'}, 'Plugins': {'allure-pytest': '2.8.6', 'PyTestReport': '0.1.9.3', 'assume': '2.2.1', 'forked': '0.2', 'html': '1.19.0', 'metadata': '1.7.0', 'ordering': '0.6', 'repeat': '0.7.0', 'rerunfailures': '8.0', 'xdist': '1.23.2'}, 'JAVA_HOME': 'D:\\java\\jdk1.8'}
rootdir: D:\soft\code\pytest_api_2020_03
plugins: allure-pytest-2.8.6

可以获取到的元数据

Key Description Example
Python Python 版本 '3.6.0'
Platform 运行平台 'Windows-10-10.0.17134-SP0'
Packages pytest 包相关信息 {'pytest': '4.5.0', 'py': '1.5.4', 'pluggy': '0.13.1'}
Plugins pytest 插件 {'allure-pytest': '2.8.6', 'PyTestReport': '0.1.9.3'}
JAVA_HOME JAVA环境变量 'D:\java\jdk1.8'

元数据是以键值对(key-value)方式存储的

添加 metadata

我们可以在命令行用 --metadata 参数添加键值对(key, value)的元数据。

比如当我们完成了一个项目,需要添加作者信息,于是就可以添加元数据

pytest --metadata auther yoyo

如果需要添加多个元数据,可以使用多次 --metadata 参数添加

pytest --metadata auther yoyo --metadata version v1.0

从文档上看可以支持json格式,一次性传多组元数据,使用--metadata-from-json,但我自己试了下,并不支持这个参数,这种方式可以忽略!

pytest --metadata-from-json '{"cat_says": "bring the cat nip", "human_says": "yes kitty"}'

pytest_metadata hook函数

在代码里面也可以新增/修改/删除 元数据,我们可以使用 pytest_metadata hook函数

import pytest
@pytest.mark.optionalhook
def pytest_metadata(metadata):
metadata.pop("password", None)

我们可以使用 metadata fixture,用于测试用例或fixture 访问元数据(metadata)

def test_metadata(metadata):
assert 'metadata' in metadata['Plugins']

在插件里面访问 metadata,可以在config对象使用 _metadata 属性来新增/修改/删除 元数据

def pytest_configure(config):
if hasattr(config, '_metadata'):
config._metadata['foo'] = 'bar'

插件集成

下面是一个方便的插件列表,这些插件要么读取元数据,要么对元数据有贡献:

  • pytest-base-url - Adds the base URL to the metadata.
  • pytest-html - Displays the metadata at the start of each report.
  • pytest-selenium - Adds the driver, capabilities, and remote server to the metadata.

pytest.ini 管理元数据

如果新增的元数据较多,在命令行输入不太方便,可以在pytest.ini配置里面配置你的项目元数据

# pytest.ini
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/ [pytest]
addopts = -v
--html=report.html
--self-contained-html
--metadata auther yoyo
--metadata version v1.0

pytest文档43-元数据使用(pytest-metadata)的更多相关文章

  1. pytest文档18-配置文件pytest.ini

    前言 pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行. ini配置文件 pytest里面有些文件是非test文件 py ...

  2. pytest文档7-pytest-html生成html报告

    前言 pytest-HTML是一个插件,pytest用于生成测试结果的HTML报告.兼容Python 2.7,3.6 pytest-html 1.github上源码地址[https://github. ...

  3. pytest文档3-pycharm运行pytest

    前言 上一篇pytest文档2-用例运行规则已经介绍了如何在cmd执行pytest用例,平常我们写代码在pycharm比较多 写完用例之后,需要调试看看,是不是能正常运行,如果每次跑去cmd执行,太麻 ...

  4. pytest文档19-doctest测试框架

    前言 doctest从字面意思上看,那就是文档测试.doctest是python里面自带的一个模块,它实际上是单元测试的一种. 官方解释:doctest 模块会搜索那些看起来像交互式会话的 Pytho ...

  5. pytest文档1-环境准备与入门

    前言 首先说下为什么要学pytest,在此之前相信大家已经掌握了python里面的unittest单元测试框架,那再学一个框架肯定是需要学习时间成本的. 刚开始我的内心是拒绝的,我想我用unittes ...

  6. pytest文档56-插件打包上传到 pypi 库

    前言 pytest 的插件完成之后,可以上传到 github,方便其他小伙伴通过 pip 源码安装.如果我们想通过 pip install packages 这种方式安装的话,需上传到 pypi 仓库 ...

  7. pytest文档55-plugins插件开发

    前言 前面一篇已经学会了使用hook函数改变pytest运行的结果,代码写在conftest.py文件,实际上就是本地的插件了. 当有一天你公司的小伙伴觉得你写的还不错,或者更多的小伙伴想要你这个功能 ...

  8. pytest文档51-内置fixture之cache使用

    前言 pytest 运行完用例之后会生成一个 .pytest_cache 的缓存文件夹,用于记录用例的ids和上一次失败的用例. 方便我们在运行用例的时候加上--lf 和 --ff 参数,快速运行上一 ...

  9. pytest文档46-关于https请求警告问题(InsecureRequestWarning: Unverified HTTPS request is being made)

    前言 使用 pytest 执行 https 请求用例的时候,控制台会出现警告:InsecureRequestWarning: Unverified HTTPS request is being mad ...

随机推荐

  1. CLTPHP 漏洞

    前言 awd小组的第一次训练 0x01 首先看一下主界面 使用的应该是PHP模板,随便翻一下找到一个注册界面 随便注册一个用户,登陆后在设置里找到一个上传点 上传我们的一句话木马 查看返回包,上传成功 ...

  2. 蓝桥杯校内模拟赛Python解答

    @ 目录 1. 15.125GB 2. 约数个数 3. 叶结点数 4. 数字9 5. 数位递增的数 6. 递增三元组 7. 音节判断 8. 长草 9. 序列计数 10. 晚会节目单 1. 15.125 ...

  3. Java沙箱安全机制介绍【转载】

    沙箱安全机制的应用层面:360沙箱.win10沙箱.包括VMware Workstation.Oracle VM VirtualBox都可以充当沙箱去使用,沙箱中的操作与本机无关,进而保证本机的安全性 ...

  4. Linux实战(13):Centos8安装FFmpeg

    此文章所做的操作参考漏网的鱼:参考链接 步骤1:安装RPMfusion Yum存储库 RHEL或兼容发行版(如CentOS)上启用EPEL. dnf -y install https://downlo ...

  5. Linux常用命令详解(3)

    pidofpstopipuptimewgetcurltrddtargrepfind 命令详解 1.pidof 获取正在运行程序的PID 实例1: [root@ken ~]# pidof sshd 24 ...

  6. php第三天-数组的定义,数组的遍历,常规数组的操作

    0x01 数组分类 在php中有两种数组:索引数组和关联数组 索引数组的索引值是整数,以0开始.当通过位置来标识东西时用索引数组. 关联数组是以字符串作为索引值,关联数组更像操作表.索引值为列名,用于 ...

  7. 【转】postgreSQL​之autovacuum性能问题分析(二)

    如上篇文章提到,如果出现了autovacuum的问题,那么这可能是个悲伤的故事.怎么解决? 笔者觉得可以从如下几个方面着手去考虑解决问题,可以避免一些坑.1) 持续观察,是不是autovacuum问题 ...

  8. LazySysAdmin 靶机渗透

    Vulnhub-LazySysAdmin 靶机渗透 发现六个开放的端口,分别为22,80,139,445,3306以及6667. 139/tcp open netbios-ssn Samba smbd ...

  9. 能否使用GHDL+GTKWave代替Quartus ii (续——vhdl_testbench_cli)

    vhdl_testbench_cli项目介绍 这是我放在gitee上的一个项目. 项目是用于Mac系统下生成vhdl testbench的工具. 主要就是续着这篇文章<能否使用GHDL+GTKW ...

  10. 一款Java开源的Springboot即时通讯 IM,附源码

    # 开篇 电商平台最不能缺的就是即时通讯,例如通知类下发,客服聊天等.今天,就来给大家分享一个开源的即时通讯系统.如对文章不感兴趣可直接跳至文章末尾,有获取源码链接的方法. 但文章内容是需要你简单的过 ...