You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TestNG集成Report Portal异常:无法生成报告及HTTP 403错误求助

问题:Report Portal集成TestNG框架日志无法附加,更换示例仓库后出现403 Forbidden错误

我尝试将Report Portal集成到当前TestNG框架中,但报告无法附加日志。已按照TestNG代理文档完成以下配置:

  • 添加reportportal.properties配置文件,内容为:
    rp.endpoint = http://localhost:8080
    rp.api.key = e0e541d8-b1cd-426a-ae18-b771173c545a
    rp.launch = TestNG Tests
    rp.project = default_personal
    
  • 在/META-INF/services/下创建org.testng.ITestNGListener文件,内容为:
    com.epam.reportportal.testng.ReportPortalTestNGListener
    
  • 引入相关依赖:
    <dependency>
        <groupId>com.epam.reportportal</groupId>
        <artifactId>agent-java-testNG</artifactId>
        <version>5.4.6</version>
        <scope>test</scope>
    </dependency>
    
    <dependency>
        <groupId>com.epam.reportportal</groupId>
        <artifactId>logger-java-log4j</artifactId>
        <version>5.2.3</version>
        <scope>test</scope>
    </dependency>
    

更换为Java示例仓库后,出现HTTP 403 Forbidden错误,怀疑本地Docker部署的RP实例无法被测试环境访问,错误堆栈信息如下:

2025-03-13 13:24:24,862 [rp-io-2] ERROR com.epam.reportportal.service.Launch - [41] ReportPortal execution error
retrofit2.adapter.rxjava2.HttpException: HTTP 403 Forbidden
    at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:57)
    at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:38)
    at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:48)
    at io.reactivex.Observable.subscribe(Observable.java:12267)
    at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:35)
    at io.reactivex.Observable.subscribe(Observable.java:12267)
    at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96)
    at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:38)
    at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:26)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1575)
2025-03-13 13:24:24,895 [rp-io-2] ERROR com.epam.reportportal.service.Launch - [41] ReportPortal execution error
retrofit2.adapter.rxjava2.HttpException: HTTP 403 Forbidden
    at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:57)
    at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:38)
    at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:48)
    at io.reactivex.Observable.subscribe(Observable.java:12267)
    at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:35)
    at io.reactivex.Observable.subscribe(Observable.java:12267)
    at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96)
    at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:38)
    at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:26)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1575)
解决建议

一、排查403 Forbidden错误

  1. 验证API Key有效性
    确认rp.api.key属于default_personal项目下的有效用户,且该用户拥有测试执行/启动的权限。登录Report Portal后台,检查密钥是否正确,以及用户项目权限配置。
  2. 修复网络连通性
    • 若测试环境与本地Docker RP不在同一网络,localhost:8080无法访问,替换rp.endpoint为宿主机实际IP(如http://192.168.x.x:8080)。
    • 在测试环境执行curl http://<RP地址>/api/v1/default_personal -H "Authorization: Bearer <你的API Key>",验证是否能正常返回响应,同时检查防火墙/安全组是否拦截8080端口。
  3. 检查Docker RP配置
    • 用docker ps确认容器端口映射是否正确(容器8080端口已映射到宿主机8080)。
    • 登录RP后台确认系统服务运行正常,无异常状态。

二、解决日志无法附加问题

  1. 配置Log4j Appender
    由于引入了logger-java-log4j,需确保项目中有正确的Log4j配置文件(如log4j2.xml),并添加Report Portal Appender:
    <Appenders>
        <ReportPortalLog name="ReportPortal">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </ReportPortalLog>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="ReportPortal"/>
        </Root>
    </Loggers>
    
  2. 确认Listener加载正常
    检查org.testng.ITestNGListener文件路径是否为src/test/resources/META-INF/services/,也可在测试类手动添加@Listeners(ReportPortalTestNGListener.class)验证Listener是否生效。
  3. 统一依赖版本
    agent-java-testNG(5.4.6)与logger-java-log4j(5.2.3)版本跨度较大,建议将日志依赖升级到5.4.x同大版本,避免兼容性问题。

内容的提问来源于stack exchange,提问作者nik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 01:15:01