空手道:空手道中是否存在http-request挂钩,每次API调用后都会自动调用该挂钩,并且我可以修改其行为?

时间:2019-11-27 17:45:46

标签: automated-tests karate web-api-testing intuit

我想要一个常见的实现,将我在任何空手道功能文件中发出的所有HTTP请求的请求体,请求方法和响应体写入输出文件中。

我已经阅读了文档,发现最接近的选项是afterScenario钩子。但是,如果我想在同一场景中进行多个API调用,这对我没有帮助。

我还尝试通过将karate.prevRequest对象传递给我编写的java函数来使用它。虽然这可以帮助我捕获所需的信息,但我每次调用API后都必须继续调用Java函数,这是我不想做的。

我希望能够编写一个在每次API调用后都会被调用的钩子,并使我能够访问请求正文,请求标头,响应标头,响应正文,请求方法和请求URL。

这应该是相当简单的,显然我似乎在这里丢失了一些东西。

2 个答案:

答案 0 :(得分:3)

首先,我个人认为这是对空手道的滥用,与实际测试相比,您似乎对报告更感兴趣。花点时间考虑一下。空手道具有出色的报告集成功能,根据我非常真诚的真诚意见,您正在浪费时间。没有人要求这个。

无论如何。 0.9.5.RC4中有一个新的ExecutionHook,详细信息在这里:https://github.com/intuit/karate/issues/970#issuecomment-557443551

您可以实现afterStep,查看它是否为method步骤,然后执行此操作。如果需要更改,请打开一个问题。

编辑:刚刚想起-在develop分支中,我们添加了一种拦截所有请求和响应的方法:https://twitter.com/karatedsl/status/1195240779213496320-很高兴获得您的反馈,并看看我们是否可以将这一概念与上面的钩子-或根据需要改进界面

答案 1 :(得分:1)

ExecutionHook支持很多不同的用例。

步骤可以中止或更改

可以嗅探请求和响应

有关如何使用ExecutionHook的信息,请参见ExecutionHookExampleTest