2017-07-17 89 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其他并发症和一个简单的方法来处理在浏览器的交互。

注意上面所有的代码是伪代码/红宝石