我們的測試存儲了大量有關每個已執行的測試的信息,這些信息都在一些目錄中排序。如果將來自同一次運行的所有結果一起存儲在例如由date/id命名的目錄中,這將是實際的。這樣就很容易查看歷史記錄並跟蹤什麼是什麼。目前,這是一項手動作業,每次運行後都必須重命名輸出目錄以保存記錄。是否有某種運行ID對於單個「運行」中的所有功能都是相同的?
我們可以很容易地在黃瓜以外的地方編寫腳本來實現自動化,但是我想知道這是否可以通過黃瓜框架完成。一種簡單的方法(如果可能的話)是創建一個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