我正在开发一个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。
任何解决方案?
答案 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"