Поведенческий тест покрытия с Behat

Я хотел бы приблизить тестовое покрытие поведения с использованием Behat в PHP.

Очевидно, что, в отличие от покрытия кода, поведенческое покрытие не поддается точной количественной оценке, однако мы можем знать, какое поведение мы планируем адаптировать с самого начала. Например, мы можем знать, что пользователь может 1) купить продукт, 2) прокомментировать продукт. Для этого мы бы хотели написать два теста BDD.

Для начала мы могли бы создать заполнители и использовать стандартный тег @wip, чтобы пометить каждый тест как незавершенный.

У меня есть два связанных вопроса:

Можно ли иметь отчет Behat об общем количестве сценариев и общем количестве сценариев с данным тегом (т. Е. @Wip)?

Может ли Бехат узнать этот счет, даже если вы используете фильтр «~ @ wip», чтобы игнорировать эти тесты?

1

Решение

Вы можете использовать хуки для получения информации о сценариях, включая их теги, однако вы можете сделать это только в @beforeFeature или же @beforeSuite,

К сожалению, это означает, что он не будет сообщать о сценариях с отфильтрованными тегами.

Вот мое первоначальное решение.

class Context extends BehatContext {

protected static $scenarioCount = 0;

protected static $scenarioCountWip = 0;

/**
* Count scenarios and WIP
* @BeforeScenario
*/
public function countScenario(Behat\Behat\Event\ScenarioEvent $scenario)
{
self::$scenarioCount++;
if(in_array('wip', $scenario->getScenario()->getTags())) {
self::$scenarioCountWip++;
}
}

/**
* @AfterSuite
*/
public static function coverageReport()
{
echo 'Scenarios:      '.self::$scenarioCount.PHP_EOL;
echo ' - in progress: '.self::$scenarioCountWip.PHP_EOL;
echo ' - coverage:    '.(100/self::$scenarioCount)*(self::$scenarioCount-self::$scenarioCountWip).PHP_EOL;
echo PHP_EOL;
}

}

Файл функции:

Feature: Test Count

@wip
Scenario: Work in progress

@someTag
Scenario: Scenarion with tag

Scenario: Final scenario

Результат при запуске всех тестов:

Feature: Test Count

@wip
Scenario: Work in progress

@someTag
Scenario: Scenarion with tag

Scenario: Final scenario

Scenarios:      3
- in progress: 1
- coverage:    66.666666666667

3 scenarios (3 passed)
No steps

Этот результат с @wip отфильтровывается:

Feature: Test Count

@someTag
Scenario: Scenarion with tag

Scenario: Final scenario

Scenarios:      2
- in progress: 0
- coverage:    100

2 scenarios (2 passed)
No steps

Я оставлю вопрос открытым в надежде, что кто-то найдет лучшее решение.

0

Другие решения

Других решений пока нет …