首页 > 解决方案 > 空手道 - 设置全局请求标头

问题描述

因此,我设法编写了一堆测试,并在每个功能文件中设置了相同的请求标头。

例如:

Given url appUrl
And path '/path'
* header Accept = 'application/json'

我想知道是否有一种方法可以设置一次标题,以便在每个场景运行之前设置它。我已阅读文档并在 karate-config.js 中尝试了 callSingle 方法,如下所示:

karate.callSingle('classpath:api/Utilities/Feature/header.feature');

header.feature 看起来像:

Feature: common routing that sets the headers for all features

  Background:
    * configure headers = { Accept : 'application/json' }

以及我希望预设标题的示例功能:

 Feature: Header Preset

      Scenario: I expect the header to be set
        Given url appUrl
        And path '/path'
        When method get
        Then status 200
        * print response
       #I expect the response to be returned in JSON format 

但是我无法让这个工作。我不认为我已经理解 callSingle 方法是如何工作的。一些指示会有所帮助。谢谢。

标签: karate

解决方案


暂时忽略callSingle并专注于configure headers.

我认为您缺少一个步骤-即确保configure headers在每个Scenario. 如果您 100% 确定这适用于“全球”,只需在以下位置执行此操作karate-config.js

karate.configure('headers', { Accept: 'application/json' });

否则,您使用Background(在每个功能中):

* configure headers = { Accept: 'application/json' }

通常,您有更多通用步骤,因此您将它们放在“通用”功能文件中,call并且用于每个测试。参考:https ://github.com/intuit/karate#shared-scope


推荐阅读