gpt4 book ai didi

testing - 在 Behat 的功能文件中使用占位符

转载 作者:行者123 更新时间:2023-11-28 21:25:10 25 4
gpt4 key购买 nike

我有一个功能文件如下

    Feature: Test send API request
In order to test my API
As a Tester
I want to be able to perform HTTP request


Scenario:Sending GET request to activate user after registration api to verify whether the response code is 403 when 'X-Auth-Token' is missing
When I have a request "GET /api/activateuser?token=:tokenhash"
And I set the "Accept" header to "application/json"
And I set the "X-Auth-Token" header to "0125ee8dfe42bafbec95aa0d2676c91d8a780715b76504cf798aae6e74c08a30"
.
.

Scenario:Sending GET request to activate user after registration api to verify whether the response code is 403 when 'X-Auth-Token' is invalid
When I have a request "GET /api/activateuser?token=:tokenhash"
And I set the "Accept" header to "application/json"
And I set the "X-Auth-Token" header to "0125ee8dfe42bafbec95aa0d2676c91d8a780715b76504cf798aae6e74c08a30"
.
.

Scenario:Sending GET request to activate user after registration api to verify whether the response code is 404 when userid is invalid
When I have a request "GET /api/activateuser?token=:tokenhash"
And I set the "Accept" header to "application/json"
And I set the "X-Auth-Token" header to "0125ee8dfe42bafbec95aa0d2676c91d8a780715b76504cf798aae6e74c08a30"
.
.

请求中的'X-Auth-Token'参数对于所有场景都是相同的,不会经常改变。所以我正在考虑将它设置为某个变量并在场景中使用该变量。但是还没有找到任何方法来做到这一点。即使我们可以在 behat.yml 中设置值并在场景中使用它也没关系,但即使那样也是不可能的。

我还有不止一个参数需要这样设置。

那么有没有什么方法可以设置一次值,然后在所有场景中重新使用?

最佳答案

您可以使用两者的组合。

  1. A Background您可以在其中针对所有场景运行所有常见步骤。
  2. A BeforeFeature准备当前测试范围的钩子(Hook)。

下面是这样的。

  1. @BeforeScenario 标记在执行所有其他操作之前运行 prepare() 方法,以便为当前功能 session 设置变量。

  2. Background 任务下的步骤定义在每个场景之前运行,因此您不必在每个场景中重复它们。

注意:如果您的 X-Auth-Token 不会经常更改,那么只需在您的 FeatureContext 文件中硬编码该值并且不要执行上面的第 2 步根本。我的示例是为了让您了解 Behat 的一些有用功能。

示例

根据您的需要进行调整!

特征上下文

namespace Your\Bundle\Features\Context;

use Behat\Behat\Hook\Scope\BeforeScenarioScope;
...

class FeatureContext ...
{
private static $xAuthToken;

/**
* @BeforeFeature
*/
public static function prepare()
{
self::setXAuthToken();
}

private static function setXAuthToken()
{
self::$xAuthToken = 123;
}

/**
* @Given /^I set the header "([^"]*)" to "([^"]*)"$/
*/
public function iSetTheHeader($header, $value)
{
// Do whatever you want
}

/**
* @Given /^I send "([^"]*)" request to "([^"]*)"$/
*/
public function iSendRequest($method, $url)
{
// Do whatever you want
}

/**
* @Given /^the X-Auth-Token is available$/
*/
public function theXAuthTokenIsAvailable()
{
echo self::$xAuthToken;
}
}

特征文件

Feature: Shared token

Background: I am common to all scenarios
Given I set the header "Accept" to "application/json"
When I send "GET" request to "/api/hello-world"

Scenario: 1
Given the X-Auth-Token is available

Scenario: 2
Given the X-Auth-Token is available

结果

enter image description here

关于testing - 在 Behat 的功能文件中使用占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42572872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com