如何在behat测试中设置请求标头?

时间:2014-09-25 08:02:04

标签: header request behat

我正在开发一个Rest API并使用Behat和mink-selenium2-driver进行测试(这是第一次)。出于安全考虑,每个调用都需要在请求标头中包含一个apikey。

我的问题是,我无法设置标题。我的测试看起来像这样:

Given I add "X_ApiKey" header equal to "test"
When I send a GET request to "/notice"
Then the response status code should be 200

但我一直得到403。

任何解决方案?

3 个答案:

答案 0 :(得分:2)

在硒中它是不可能的。 需要在其他驱动程序上测试这个,比如guzzle

据我所知,硒驱动铅铬,但不是如何工作。在我看来,检查使用其他驱动程序(如guzzle,在哪里可以设置标题)的提议是一个答案。

不,我发现你还可以选择其他选项。建议您使用代理为浏览器生成的请求注入其他标头。

为此,我找到了 * http://wiremock.org/

答案 1 :(得分:0)

您应该使用包含behatch/rest上下文的behatch包。

但是,只有在您特别需要浏览器时才能使用selenium驱动程序,例如javascript。在这种情况下,当您测试API端点时,使用浏览器只会降低您的速度并且不会带来任何好处。

答案 2 :(得分:0)

可以使用Restler,一个可以帮助在Behat中进行RESTful API测试的微框架。它支持使用Behat和Guzzle进行驱动API测试的行为。

以下是示例:

Given that "X_ApiKey" header is set to "test"
When I request "/notice"
Then the response status code should be 200

以下是negotiation-format.feature file的另一个例子:

Scenario: One with more `q` should be selected, q = 1 when not defined
  Given that "Accept" header is set to "application/json;q=0.8,application/xml"
  When I request "/examples/_003_multiformat/bmi"
  Then the response status code should be 200
  And the response is XML
  And the type is "array"