2017-07-17 92 views
0

我將如何處理使用Java的黃瓜硒以下那種情景:申請條件黃瓜功能情景

Scenario: Raise Invoice by User according to Raise Invoice Type. 
    When I select the Raise Invoice Type as "RaiseInvoiceType" 
    IF RaiseInvoiceType == 'ABC' 
    Method ABC() 
    else if RaiseInvoiceType == 'XYZ' 
    Method XYZ() 

「RaiseInvoiceType」是一個變量,取決於單選按鈕或下拉。 如何使用條件實現黃瓜功能文件和步驟定義類方法?

+0

我們展示步驟定義 –

回答

3

背景

黃瓜功能的文件都是關於彌合業務和開發團隊之間的對話差距,因此,代碼和條件語句應該永遠不會出現在他們裏面。

解決方案

解決你的問題是你如何寫步驟定義。

使用黃瓜的Ruby實現作爲一個例子:

When('I select the Raise Invoice Type as "$invoice_type"') do | invoice_type | 
    if invoice_type == 'ABC' 
    method_abc 
    else 
    if invoice_type == 'XYZ' 
     method_xyz 
    else 
     raise 'Unknown invoice type' 
    end 
    end 
end 

這使得代碼和條件語句出來的特徵文件,這在本質上意味着要住在應用的行爲的文檔/系統

進一步改進

但我會走這麼遠來改變ST的措辭EP太:

Scenario Outline: Raise Invoice by User according to Raise Invoice Type. 
    When I raise the invoice type "<invoice_type>" 
    Then some expected behaviour 

Examples: 
    | invoice_type | 
    | ABC   | 
    | XYZ   | 

這帶來的步驟就可以實現(這可能是下拉菜單,例如Radio或文本框)的地方,更多地轉向系統的行爲 - 這情況是突出的是,該功能你應該能夠提出發票,而不是你應該有一個選擇列表的選擇框中選擇。

0

這裏重要的是兩種發票類型之間的差異。每種類型對您的業務都很重要,所以我會爲每種類型創建一個步驟,例如

When I raise an ABC invoiceWhen I raise an XYZ invoice

在實施步驟定義,然後我可能會考慮使用相同的輔助方法,例如減少代碼

When I raise an ABC invoice' do 
    raise_invoice type: 'abc' 
end 

When I raise an XYZ invoice' do 
    raise_invoice type: 'xyz' 
end 

然後有一個幫手方法處理您如何提高發票。

def raise_invoice(type:) 
    click_radio('invoice', type) 
end 

這讓你很簡單的步驟定義,沒有條件語句或者在你的腳步DEFS其他併發症和一個簡單的方法來處理在瀏覽器的交互。

注意上面所有的代碼是僞代碼/紅寶石