karate - afterScenario 执行挂钩的详细信息
问题描述
我正在使用空手道的 ExecutionHook
需要以下详细信息,例如场景名称、标签、端点、请求、响应、状态和错误
@Override
public void afterScenario(ScenarioResult result, ScenarioContext context) {
System.out.println("This is into Hook, scenario tags is "+ result.getScenario().getTags());
System.out.println("This is into Hook, scenario name is "+ result.getScenario().getName());
System.out.println("This is into Hook, scenario EndPoint is "+ context.getHttpClient());
System.out.println("This is into Hook, scenario request is "+ context.getPrevRequest());
System.out.println("This is into Hook, scenario response is "+ context.getPrevResponse());
System.out.println("This is into Hook, scenario status is "+ result.isFailed());
System.out.println("This is into Hook, scenario Error is "+ result.getError());
}
问题:无法获得端点、请求和响应的确切详细信息。有什么帮助吗?
更新:使用以下方法时执行暂停
System.out.println("This is into Hook, scenario request is "+ context.getRequestBuilder().getBody().getAsJsonDocument());
System.out.println("This is into Hook, scenario response is "+ context.getPrevResponse().getBody().toString());
解决方案
一个内可以有多个 HTTP 调用Scenario
:https ://stackoverflow.com/a/46080568/143475
也许您正在寻找afterStep
:https ://stackoverflow.com/a/59080128/143475
getPrevRequest()
对您的问题的getPrevResponse()
简短回答:查看ScenarioContext
. 信息在那里,例如 URL 在getPrevRequest().getUri()
编辑:这ExecutionHook
是为高级用户设计的,因此没有记录。此外,有关方法ScenarioContext
应被视为“内部使用”,并且可能会在未来版本的空手道中发生变化。建议那些寻找特定需求的人自行解决或通过拉取请求向空手道(开源)贡献代码。
推荐阅读
- php - 如何在外部 html/php 网站中显示 wordpress 博客文章类别
- javascript - Mongodb,使用javascript从一组对象中删除一个对象
- laravel - 如何将 Storybook 与 Laravel Jetstream + Inertia 集成?
- sapb1 - 如何显示 SAP B1 9.2 PL10 的默认仪表板?
- java - 如何在junit测试中通过Mockito模拟以下方法
- xml - 如何将 Windows 环境变量设置为 XML 属性
- android - How to change item position of a recycle view from within its adapter?
- python - 使用 Apache Beam io.jdbc.ReadFromJdbc 时出现错误 beam:logical_type:javasdk:v1
- react-native - 如何仅在特定屏幕(例如主屏幕)上启用抽屉导航 [react native] [react navigation]
- rest - 如何使用文件本身生成 OpenAPI 规范 YML(例如 petsore.yaml)的精简版本?