如何为空手道 API 中的所有功能文件设置全局 header
How to set global header for all feature files in Karate API
我需要 post 请求获取授权令牌并将其包含在 header 中以用于所有后续测试请求。此令牌每次都会更改,但只要我不断发送请求,它就对整个测试有效 session。在每个功能文件中,我可以调用另一个功能文件来获取此令牌。但我不想对每个功能文件都这样做。我只想在测试开始时获得一次令牌并将其用于所有功能文件。我怎么做?我已经阅读了 GitHub 上的空手道信息,但没有找到答案。
演示中的第二个示例回答了您的所有问题:karate-demo。
EDIT1:抱歉,我读你的问题太快了。您可以在 karate-config.js
中使用 karate.call()
,因此它适用于所有功能文件。我不推荐这个,因为你总会有一些你不需要的功能。只需调用一个功能,不要过度设计您的测试。
EDIT2:我稍微考虑了一下,如果您对 Java 感到满意,您可以在每个功能的开头调用单例(甚至在全局 karate-config.js
) 并在该单例中缓存身份验证令牌的值。所以你可以完全按照你的需要做,而且它会很灵活。
EDIT3:基于这个问题 - 我们将此功能作为 karate.callSingle()
操作添加到空手道中,这是文档:https://github.com/intuit/karate/tree/develop#the-karate-object
我需要 post 请求获取授权令牌并将其包含在 header 中以用于所有后续测试请求。此令牌每次都会更改,但只要我不断发送请求,它就对整个测试有效 session。在每个功能文件中,我可以调用另一个功能文件来获取此令牌。但我不想对每个功能文件都这样做。我只想在测试开始时获得一次令牌并将其用于所有功能文件。我怎么做?我已经阅读了 GitHub 上的空手道信息,但没有找到答案。
演示中的第二个示例回答了您的所有问题:karate-demo。
EDIT1:抱歉,我读你的问题太快了。您可以在 karate-config.js
中使用 karate.call()
,因此它适用于所有功能文件。我不推荐这个,因为你总会有一些你不需要的功能。只需调用一个功能,不要过度设计您的测试。
EDIT2:我稍微考虑了一下,如果您对 Java 感到满意,您可以在每个功能的开头调用单例(甚至在全局 karate-config.js
) 并在该单例中缓存身份验证令牌的值。所以你可以完全按照你的需要做,而且它会很灵活。
EDIT3:基于这个问题 - 我们将此功能作为 karate.callSingle()
操作添加到空手道中,这是文档:https://github.com/intuit/karate/tree/develop#the-karate-object