Наши тесты хранят большое количество информации о каждом выполненном тесте, отсортированном по некоторым каталогам. Было бы целесообразно, если бы все результаты одного запуска хранились вместе, например, в каталоге, названном по дате/идентификатору. Таким образом, легко просматривать исторические записи и отслеживать, что к чему. В настоящее время это ручная работа, при которой выходной каталог необходимо переименовывать после каждого запуска, чтобы сохранить записи.
Мы могли бы легко написать сценарий вне огурца для достижения автоматизации, однако мне интересно, можно ли это сделать с помощью структуры огурца. Один простой способ (если это возможно) — создать переменную runId и передавать ее между всеми тестами в одном запуске. Однако, насколько я понимаю, невозможно передавать объекты/переменные между сценариями и функциями. Внедрение зависимостей, по-видимому, разрешает одни и те же объекты только между шагами. Возможно, есть еще одно место в структуре огурца, где мы можем инициировать переменную runId и передавать ее всем тестам? Или, возможно, в огурце уже есть что-то подобное, что я могу получить где-то во фреймворке?
Например, если у меня есть определения шагов:
public class StepSy {
File runDirectory;
DataObject data;
@Before
public void before() {
runDirectory = new File(someObjectPassedDown.getRunId());
}
@Given("^Condition (.*)$")
public void condition() {
/*Some conditions*/
}
@When("^I do (.*)$")
public void perform(String toDo) {
/*Some action*/
}
@Then("^I expect (.*)$")
public void expect(String expectedValue) {
/*Some assertion*/
}
@After
public void after(Scenario scenario) {
data.writeTo(runDirectory, scenario.getName());
}
}
И особенность:
Feature: Tests
Scenario: Test01
Given Condition A
When I do B
Then I expect C
Scenario: Test02
Given Condition D
When I do E
Then I expect F
Я мог бы запустить эту функцию дважды и получить два каталога:
MyTestRuns
├── Run_17.05.2017_130156
│ ├── Test01
│ └── Test02
├── Run_16.05.2017_163402
│ ├── Test01
│ └── Test02