pytest文档43-元数据使用(pytest-metadata)

前言

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

(0)

相关推荐

  • Python Requests Pytest YAML Allure实现接口自动化

    作者:wintest 链接:https://www.cnblogs.com/wintest/p/13423231.html 本项目实现接口自动化的技术选型:Python+Requests+Pytest ...

  • Python爬取某网站文档数据完整教程(附源码)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 基本开发环境 Python 3.6 Pycharm 相关模块的使用 import osimp ...

  • 5 分钟掌握 Python 中常见的配置文件

    为什么要写配置文件 在开发过程中,我们常常会用到一些固定参数或者是常量.对于这些较为固定且常用到的部分,往往会将其写到一个固定文件中,避免在不同的模块代码中重复出现从而保持核心代码整洁. 这个固定文件 ...

  • Python常用配置文件ini、json、yaml读写总结

    原创 吾非同 吾非同 3天前 开发项目时,为了维护一些经常需要变更的数据,比如数据库的连接信息.请求的url.测试数据等,需要将这些数据写入配置文件,将数据和代码分离,只需要修改配置文件的参数,就可以 ...

  • 百度文档,用Python一键免费下载

    百度文库下载需要券,或者vip才能下载 Vip价格高,偶尔下载一次不划算. 不下载复制?不好意思复制也需要vip否则只能一次复制两行. 如何才能以最低成本获取到百度文库里的文档内容呢? 当然是用Pyt ...

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

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

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

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

  • pytest文档2-用例运行规则

    用例设计原则 文件名以test_*.py文件和*_test.py 以test_开头的函数 以Test开头的类 以test_开头的方法 所有的包pakege必须要有__init__.py文件 help帮 ...

  • pytest文档3-pycharm运行pytest

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

  • pytest文档5-fixture之conftest.py

    前言 前面一篇讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作,但这种是整个脚本全局生效的,如果我想实现以下场景: 用例1需要先登录,用例2不需要登录,用例3需要先登录. ...

  • pytest文档6-fixture之yield实现teardown

    前言 上一篇讲到fixture通过scope参数控制setup级别,既然有setup作为用例之前前的操作,用例执行完之后那肯定也有teardown操作. 这里用到fixture的teardown操作并 ...

  • pytest文档7-生成html报告

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

  • pytest文档8-html报告报错截图+失败重跑

    前言 做web自动化的小伙伴应该都希望在html报告中展示失败后的截图,提升报告的档次,pytest-html也可以生成带截图的报告. conftest.py 1.失败截图可以写到conftest.p ...

  • pytest文档9-参数化parametrize

    前言 pytest.mark.parametrize装饰器可以实现测试用例参数化. parametrizing 1.这里是一个实现检查一定的输入和期望输出测试功能的典型例子 # content of ...

  • pytest文档10-命令行传参addoption

    前言 命令行参数是根据命令行选项将不同的值传递给测试函数,比如平常在cmd执行"pytest -html=report.html",这里面的"-html=report.h ...