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错误
- 验证API Key有效性
确认rp.api.key属于default_personal项目下的有效用户,且该用户拥有测试执行/启动的权限。登录Report Portal后台,检查密钥是否正确,以及用户项目权限配置。 - 修复网络连通性
- 若测试环境与本地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端口。
- 若测试环境与本地Docker RP不在同一网络,
- 检查Docker RP配置
- 用
docker ps确认容器端口映射是否正确(容器8080端口已映射到宿主机8080)。 - 登录RP后台确认系统服务运行正常,无异常状态。
- 用
二、解决日志无法附加问题
- 配置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> - 确认Listener加载正常
检查org.testng.ITestNGListener文件路径是否为src/test/resources/META-INF/services/,也可在测试类手动添加@Listeners(ReportPortalTestNGListener.class)验证Listener是否生效。 - 统一依赖版本
agent-java-testNG(5.4.6)与logger-java-log4j(5.2.3)版本跨度较大,建议将日志依赖升级到5.4.x同大版本,避免兼容性问题。
内容的提问来源于stack exchange,提问作者nik
相关产品推荐
相关产品推荐

