2017-07-07 57 views
0

我們在我們的自動化框架清理鉤從黃瓜特徵文件標記方案中使用具有不同值的一個標籤要根據黃瓜

@cc_task_clean_up_hook_enrol_A 情景:人可以enrol_A 當我選擇上下文菜單 然後我能夠登記患者進入「enrol_A」

鉤(@cc_task_clean_up_hook)的實施

@After(value = "@toc_task_clean_up_hook_enrol_A", order = HookOrder.CLEAN_UP_APP_AFTER) 
public void cleanUpTOC() { 
    this.patientContextPage.selectedContextMenuItem("Pathway"); 
    this.pathWayPage.selectReferences("Enroll in Pathway"); 
    this.pathWayPage.deactivateEnrollment("enrol_A", "Withdrawn"); 
} 

所以完全相同的方式,我們需要一個像

情景另外一種情況:人可以enroll_B 當我選擇右鍵菜單 然後我能夠登記患者進入「enrollB」

所以我們可以實現另一個鉤子如下,所不同的是參數類型「enrollB」

@After(value = "@toc_task_clean_up_hook_enrollB", order = HookOrder.CLEAN_UP_APP_AFTER) 
public void cleanUpTOC() { 
    this.patientContextPage.selectedContextMenuItem("Pathway"); 
    this.pathWayPage.selectReferences("Enroll in Pathway"); 
    this.pathWayPage.deactivateEnrollment("enrol_B", "Withdrawn"); 
} 

那麼,這可能合併這兩種方法,寫上一個通用的清理鉤子,基於傳遞的參數?非常感謝您的幫助。

回答

0

您可以將腳本對象添加到傳遞給後掛鉤的參數。該框架會將當前正在執行的場景注入該方法。

public void afterMethod(Scenario scenario){} 
  1. 可以使用Scenario對象,將返回的標籤集合當前執行情況的getSourceTagNames()方法。從這個集合中,您可以確定您的代碼是否以'enroll_A'或'enroll_B'結尾。

  2. 或者您可以使用getName()方法返回當前場景的描述。所以你會得到'Person can enroll_A'或'P ..... enroll_B'。只需要再次解析。

  3. 您可以修改Then step以將註冊類型傳遞給步驟定義。將其存儲在一個變量中。在你的後掛鉤中使用這個變量。但是這將需要後鉤在同一類。你

還需要將value parameter of After掛鉤改爲 - {"@toc_task_clean_up_hook_enrollA,@toc_task_clean_up_hook_enrollB"}

一個觀察,這兩個似乎有相同的步驟,如果是的話,那麼你有沒有考慮ScenarioOutline。

+0

非常感謝你,它的工作 – user8267843