Python 赋能,开启自动化测试与 ReportPortal 的融合之旅
📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)
📝 职场经验干货:
今天,我们将深入探讨如何将 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%免费】


更多推荐



所有评论(0)