📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


今天,我们将深入探讨如何将 ReportPortal 与 Python 集成,以便在你的自动化测试项目中充分利用 ReportPortal 的强大功能。

在这里插入图片描述

安装依赖包

pip install pytest-reportportal
pip install reportportal-client

目录结构

├─.idea
│  └─inspectionProfiles
└─reportportal
    ├─.pytest_cache
    │  └─v
    │      └─cache
    ├─screenshot
    └─__pycache__

在这里插入图片描述

脚本编写

在这里插入图片描述

1.创建 conftest.py,处理日志类

如果要将测试记录集成到 ReportPortal,我们可以使用 Python 日志模块来处理

# -*- coding: utf-8 -*-
import logging


import pytest

from reportportal_client import RPLogger


@pytest.fixture(scope="session")
def rp_logger():
    logger = logging.getLogger(__name__)
    logger.setLevel(logging.DEBUG)
    logging.setLoggerClass(RPLogger)
    return logger

2.创建pytest.ini配置文件,配置 ReportPortal

[pytest]
rp_api_key = TesterRoad_pqz5r76CSSgfgehsZ1Bkj7D3131x123456rGMQ-4-hH3133yqHYp5fvfVgzOd_3z
rp_endpoint = http://127.0.0.1:8080
rp_project = superadmin_personal
rp_launch = TesterRoad_ReportPortal
rp_launch_attributes = 'PyTest' 'Smoke'
rp_launch_description = 'Smoke test'
rp_ignore_attributes = 'xfail' 'usefixture'

配置说明:

rp_api_key:API密钥,在个人中心创建,在创建时记得复制,一旦创建完成,这个 key 将不可见

rp_endpoint:ReportPortal服务器地址,本地部署即http://127.0.0.1:8080

rp_project:项目名称,在管理中查看,默认为 uperadmin_personal,见图 rp_project

rp_launch:启动名称,可自定义,默认为 Pytest Launch

rp_launch_attributes:启动的属性列表

rp_launch_description:启动描述

rp_ignore_attributes:忽略指定的 pytest 标记

3.创建 test 测试类

# -*- coding: utf-8 -*-
import os

import pytest
from pathlib import Path


# INFO消息将被发送到ReportPortal
def test_one(rp_logger):
    """
    测试用例描述:校验 TesterRoad 中是否包含 Test
    """
    # 获取当前工作目录
    current_path = Path.cwd()
    directory  = f'{current_path}\\reportportal\\screenshot'
    filename = "test_name_screenshot.png"
    screenshot_file_path = os.path.join(directory, filename)
    rp_logger.info("Case1. Step1")
    x = "TesterRoad"
    rp_logger.info("x is: %s", x)
    assert 'Test' in x

    # 带有附件的log
    with open(screenshot_file_path, "rb") as image_file:
        file_data = image_file.read()
        rp_logger.info(
            "Some Text Here",
            attachment={"name": f"{filename}",
                        "data": file_data,
                        "mime": "image/png"})


def test_two(rp_logger):
    """
    测试用例描述:校验 TesterRoad 中是否包含 Test
    """
    rp_logger.info("Case1. Step1")
    x = "TesterRoad"
    rp_logger.info("x is: %s", x)
    assert 'TEST' in x

4.执行测试

pytest .\reportportal\test_reportportal.py --reportportal

5.查看测试结果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

⚠️过滤器必须要存在且要与 Dashboard 中的组件相关联,不然 Dashboard 不会展示数据

ReportPortal Pytest 配置参数(可选)

1.rp_client_type = SYNC:底层 ReportPortal 客户端实现的类型。可能的值:[SYNC、ASYNC_THREAD、ASYNC_BATCHED]。

2.rp_launch = AnyLaunchName:启动名称(可以被 pytest --rp-launch 选项覆盖,默认值为“Pytest Launch”)。

3.rp_launch_id = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:现有启动的 ID(会话将不会处理给定启动的生命周期)。

4.rp_launch_attributes = ‘PyTest’ ‘Smoke’ ‘Env:Python3’:启动的属性列表。

5.rp_launch_description = ‘Smoke test’:启动描述(可以被 pytest–rp-launch-description 选项覆盖,默认值为’')。

6.rp_launch_timeout = 86400:等待子进程完成的最大时间,默认值:86400 秒(1 天)。

7.rp_launch_uuid_print = True:启用在测试运行开始时打印启动 UUID。默认 False。

8.rp_launch_uuid_print_output = stderr:启动 UUID 打印输出。默认 stdout。可能的值:[stderr, stdout]。

9.rp_parent_item_id = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:会话中现有测试项的 ID,用作测试的父项(会话将不会处理给定测试项的生命周期)。

10.rp_tests_attributes = ‘PyTest’ ‘Smoke’:在启动时将为每个项目添加的属性列表。

11.rp_report_fixtures = False:启用报告装置作为测试项目。可能的值:[True,False]。

12.rp_connect_timeout = 15:与 ReportPortal服务器的连接超时。默认值为“10.0”。

13.rp_read_timeout = 15:ReportPortal 连接的响应读取超时。默认值为“10.0”。

14.rp_log_batch_size = 20:批量日志请求的大小。

15.rp_log_batch_payload_size = 65000000:异步批量日志请求的最大有效负载大小(以字节为单位)。

16.rp_log_level = INFO:将报告的日志级别。

17.rp_log_format = [%(levelname)7s] (%(name)s) %(message)s (%(filename)s:%(lineno)s):用于发送到服务的日志的格式字符串。

18.rp_ignore_attributes = ‘xfail’ ‘usefixture’:忽略指定的 pytest 标记。

19.rp_is_skipped_an_issue = False:将跳过的测试视为需要调查。默认 True。

20.rp_hierarchy_dirs_level = 0:目录起始层次结构级别(从 pytest.ini 级别)(默认 0)。

21.rp_hierarchy_dirs = True:启用测试目录的层次结构,默认 False。不支持“xdist”插件。

22.rp_hierarchy_dir_path_separator:路径分隔符用于显示测试层次结构中的目录。如果值为空,则将使用当前系统路径分隔符 (os.path.sep)。

23.rp_hierarchy_code:启用内部类和参数化测试的层次结构,默认 False。不支持“xdist”插件。

24.rp_hierarchy_test_file:控制层次结构中的测试文件名和项目名称的显示,默认 True。

25.rp_bts_issue_url = https://bugzilla.some.com/show_bug.cgi?id={issue_id}:问题 URL(issue_id 将由装饰器中的参数填充 @pytest.mark.issue)。如果你希望自动将失败的测试与外部问题联系起来,或者将评论放入 ReportPortal 缺陷中,请填写此参数。

26.rp_bts_project = PROJECT:与装饰器一起使用的 Bug 跟踪系统项目名称 @pytest.mark.issue。如果你想自动将失败的测试与外部问题联系起来,请填写此参数。应与相应的集成相同。

27.rp_bts_url = https://bugzilla.some.com/:与装饰器一起使用的 Bug 跟踪系统基本 URL @pytest.mark.issue。如果你想自动将失败的测试与外部问题联系起来,请填写此参数。应与相应的集成相同。

28.rp_issue_id_marks = True:允许为问题 ID 添加标记(例如“issue:123456”)。

29.rp_verify_ssl = True:连接到服务器时验证 SSL。

30.rp_mode = DEFAULT:DEBUG 或 DEFAULT 启动模式。DEBUG 启动显示在单独的选项卡中,除所有者外,其他人均不可见。

31.rp_thread_logging:实验性 - 通过修补内置 Thread 类,支持从线程报告日志。请谨慎使用。

32.rp_api_retries = 0:对 RP 服务器执行 REST 调用的重试次数。

总结

在本文中,老糖详细地介绍了如何将 ReportPortal 与 Python 的集成过程。通过这一集成,我们能够将测试结果和日志集中收集并展示在 ReportPortal 中,从而为团队提供了一个清晰的自动化测试执行视图。这种集成不仅简化了测试数据的管理,还增强了跨团队的协作和沟通,使得自动化测试过程更加高效。


最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取 【保证100%免费】
在这里插入图片描述
在这里插入图片描述

更多推荐