栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

2021-10-21 pytest-metadata运行环境参数提取

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-21 pytest-metadata运行环境参数提取

这里写自定义目录标题
  • pytest文档 元数据使用(pytest-metadata)
      • 简单调用
        • 必须用 `pytest` 执行
    • pytest-metadata 环境准备
    • 查看 pytest 元数据
    • 附加元数据
    • pytest.ini 管理元数据
    • pytest_metadata hook函数
  • 插件集成

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

什么是元数据?元数据是关于数据的描述,存储着关于数据的信息,为人们更方便地检索信息提供了帮助。
pytest 框架里面的元数据可以使用 pytest-metadata 插件实现。文档地址https://pypi.org/project/pytest-metadata/

简单调用

test.py

def case(metadata):
    print("This is pytest metadata") 

run

session starts (platform: win32, Python 3.9.2, pytest 6.2.5,
pytest-sugar 0.9.4) rootdir: E:developauto-scriptstmp plugins:
allure-pytest-2.9.44, anyio-3.3.4, assume-2.4.3, cov-3.0.0,
html-3.1.1, metadata-1.11.0, ordering-0.6, sugar-0.9.4 collecting ... 

Results (0.02s): PS E:developauto-scriptstmp> 
必须用 pytest 执行
  • 写入文件中 可放入初始化中或者前置步骤
def test_metadata(metadata):

    with open('runpath.txt', 'w') as file:
        for i in metadata:
            print(metadata)
            file.write(str(metadata))
            break
C:UserstestAppDataLocalProgramsPythonPython39python.exe
"C:Program FilesJetBrainsPyCharm
2021.2.2pluginspythonhelperspycharm_jb_pytest_runner.py" --path E:/develop/auto-scripts/tmp/aaa.py Testing started at 17:29 ...
Launching pytest with arguments E:/develop/auto-scripts/tmp/aaa.py
--no-header --no-summary -q in E:developauto-scriptstmp

============================= test session starts ============================= collecting ... collected 1 item

aaa.py::test_metadata PASSED                                          
[100%] {'Python': '3.9.2', 'Platform': 'Windows-10-10.0.19041-SP0',
'Packages': {'pytest': '6.2.5', 'py': '1.10.0', 'pluggy': '1.0.0'},
'Plugins': {'allure-pytest': '2.9.44', 'anyio': '3.3.4', 'assume':
'2.4.3', 'cov': '3.0.0', 'html': '3.1.1', 'metadata': '1.11.0',
'ordering': '0.6', 'sugar': '0.9.4'}, 'JAVA_HOME': 'D:\Program
Files\Java\jdk-16'}


============================== 1 passed in 0.01s ==============================

Process finished with exit code 0 ```
pytest-metadata 环境准备

使用 pip 安装 pytest-metadata

pip install pytest-metadata
查看 pytest 元数据

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

PS E:developauto-scriptstmp> pytest --verbose
Test session starts (platform: win32, Python 3.9.2, pytest 6.2.5, pytest-sugar 0.9.4)
cachedir: .pytest_cache
metadata: {'Python': '3.9.2', 'Platform': 'Windows-10-10.0.19041-SP0', 
			'Packages': {'pytest': '6.2.5', 'py': '1.10.0', 'pluggy': '1.0.0'}, 
			'Plugins': {'allure-pytest': '2.9.44', 'anyio': '3.3.4', 
			'assume': '2.4.3', 'cov': '3.0.0', 	'html': '3.1.1', 
			'metadata': '1.11.0', 'ordering': '0.6', 'sugar': '0.9.4'}, 
			'JAVA_HOME': 'D:\Program Files\Java\jdk-16'}
rootdir: E:developauto-scriptstmp
plugins: allure-pytest-2.9.44, anyio-3.3.4, assume-2.4.3, cov-3.0.0, html-3.1.1, metadata-1.11.0, ordering-0.6, sugar-0.9.4
collecting ... 
――――――――――――――――――――――――――――――――――― testcase ―――――――――――――――――――――――――――――――――――

可以获取到的元数据

KeyDescriptionExample
PythonPython 版本‘3.9.2’
Platform运行平台‘Windows-10-10.0.19041-SP0’
Packagespytest 包相关信息{‘pytest’: ‘6.2.5’, ‘py’: ‘1.10.0’, ‘pluggy’: ‘1.0.0’}
Pluginspytest 插件{‘allure-pytest’: ‘2.9.44’, ‘anyio’: ‘3.3.4’, ‘assume’: ‘2.4.3’, ‘cov’: ‘3.0.0’, ‘html’: ‘3.1.1’, ‘metadata’: ‘1.11.0’, ‘ordering’: ‘0.6’, ‘sugar’: ‘0.9.4’}, ‘JAVA_HOME’: ‘D:Program FilesJavajdk-16’}

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

附加元数据

您可以通过指定以下命令行方法提供自己的元数据(key, value pair) --metadata

pytest --metadata foo bar

注意:您可以提供多组 --metadata:

pytest --metadata foo bar --metadata baz zoo

也有可能将元数据作为JSON字符串传递--metadata-from-json:

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

在JUnit XML中包括 --metadata

import pytest

pytestmark = pytest.mark.usefixtures('include_metadata_in_junit_xml')

def test():
    pass

当被调用时

pytest --metadata Daffy Duck --junit-xml=results.xml
pytest.ini 管理元数据

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

# pytest.ini
[pytest]
addopts = -v 
  --html=report.html 
  --self-contained-html
  --metadata auther yoyo 
  --metadata version v1.0
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 - 将基本URL添加到元数据中
  • pytest-html - 在每个报表开始时显示元数据
  • pytest-reporter-html1 - 提出元数据作为报告的一部分
  • pytest-selenium - 将驱动程序、功能和远程服务器添加到元数据中.
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/341983.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号