pyest+allure框架将环境参数添加到allure首页展示

本文介绍了如何在Pytest+Allure框架中手动和自动添加环境参数到Allure报告首页,包括创建environment.properties文件、自动获取环境信息、格式化参数和在测试执行后调用environmental_information函数。
摘要由CSDN通过智能技术生成


在这里插入图片描述

1.手动添加参数

pyest+allure框架执行完成后,在allure生成的allure-results目录下创建一个environment.properties文件并将环境参数,以a=b的方式,写在文件中,如下:

environment.properties

Author=mojin
BaseUrl=http://192.168.1.234:8056/prod/
Packages_pluggy=0.13.1
Packages_py=1.11.0
Packages_pytest=7.1.3
Platform=Windows-10-10.0.22621-SP0
Plugins_Faker=13.15.1
Plugins_allure-pytest=2.10.0
Plugins_assume=2.4.3
Plugins_asyncio=0.20.3
Plugins_benchmark=3.4.1
Plugins_cov=3.0.0
Plugins_html=3.2.0
Plugins_metadata=2.0.2
Plugins_mock=3.10.0
Plugins_repeat=0.9.1
Plugins_rerunfailures=10.2
Plugins_sugar=0.9.6
Plugins_testreport=1.1.6
Plugins_xdist=3.1.0
ProjectName=\u5efa\u5de5\u96c6\u56e2
Python=3.10.7

在这里插入图片描述
完成上述步骤,执行窗口命令,将报告原始数据,生成allure的html 报告,即可完成添加参数到allure首页

allure generate ./target/allure-results -o ./target/allure-report --clean

2.自动获取环境参数

执行pyest+allure框架时会发现,环境参数是以及被获取到的,我们只需要拿到参数即可!
在这里插入图片描述
在conftest.py中,通过引用可以之间使用打印

#conftest.py
@pytest.fixture(scope='session',autouse=True)
def run_environmental_information(metadata): #执行环境版本的获取和添加
    pass

    yield
    
    Logger.info(metadata)

结果如:

{'Python': '3.10.7', 'Platform': 'Windows-10-10.0.22621-SP0', 'Packages': {'pytest': '7.1.3', 'py': '1.11.0', 'pluggy': '0.13.1'}, 'Plugins': {'allure-pytest': '2.10.0', 'Faker': '13.15.1', 'assume': '2.4.3', 'asyncio': '0.20.3', 'benchmark': '3.4.1', 'cov': '3.0.0', 'html': '3.2.0', 'metadata': '2.0.2', 'mock': '3.10.0', 'repeat': '0.9.1', 'rerunfailures': '10.2', 'sugar': '0.9.6', 'testreport': '1.1.6', 'xdist': '3.1.0'}}

2.格式化获取环境参数

思路:手动整理的参数和自动获取到参数合并,展示到allure中

手动添加的参数
# 汉字需要转为ASCII编码 在allure中展示才不乱码
# 手动在线转码 https://www.ip138.com/ascii/,添加到 ./config/environment.properties 文件中

在这里插入图片描述

将上述,获取到的环境参数,格式化整理为,allure报告需要参数格式,以a=b的方式,写在environment.properties文件中

#conftest.py

def environmental_information(data, parent_key='', sep='_'):
    '''
    获取环境信息
    :param data: 获取到的环境参数字典
    :param parent_key:
    :param sep:
    :return:
    '''
    # environment.properties文本信息为手动添加的环境信息
    # 读取environment.properties文本信息转为字典格式
    with open(all_path.environmentPath, 'r') as file:
        text_data = file.read()
        #print(text_data)
    # 将文本数据分割成行,并以等号为界分割键和值
    key_value_pairs = [line.split('=') for line in text_data.strip().split('\n')]
    # 创建字典并存储键值对
    text_data_to_dict = {key: value for key, value in key_value_pairs}

    #将多层嵌套字典转为,不嵌套的字典格式,一层结构
    flattened_data = {}
    def _flatten(current_data, key):
        for k, v in current_data.items():
            new_key = f"{key}{sep}{k}" if key else k
            if isinstance(v, dict):
                _flatten(v, new_key)
            else:
                flattened_data[new_key] = v
    _flatten(data, parent_key)

    flattened_data.update(text_data_to_dict) #手动添加的环境信息和获取到的环境信息进行合并

    flattened_data = dict(sorted(flattened_data.items())) #字典中按照key名称排序

    # flattened_data 字典格式转为 a=b 字符串格式
    flattened_srt=''
    for k, v in flattened_data.items():
        flattened_srt=flattened_srt+f'{k}={v}\n'

    #写入文本
    with open(all_path.allure_results, 'w', encoding='utf-8') as file:
        file.write(flattened_srt)

3.pytest+allure框架执行完成用例后执行调用,environmental_information函数

#conftest.py
@pytest.fixture(scope='session',autouse=True)
def run_environmental_information(metadata): #执行环境版本的获取和添加
    pass

    yield

    Logger.info(metadata)

    # metadata 获取到的环境参数
    environmental_information(metadata)

4.修改获取的环境参数(补充)

#conftest.py
@pytest.hookimpl(optionalhook=True)
def pytest_metadata(metadata:dict):
    # 修改或添加环境参数 例如下 可有可无  亦可在 ./config/environment.properties 文件中添加修改
    # 汉字需要转为ASCII编码 在allure中展示才不乱码
    # 手动在线转码 https://www.ip138.com/ascii/,添加到 ./config/environment.properties 文件中
    # 代码 添加 .encode("unicode_escape").decode() 处理中文在allure中展示乱码
    metadata['ProjectName'] = '建工集团'.encode("unicode_escape").decode()

源码地址:https://gitee.com/HP_mojin/python_pytest_environmental_information

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值