首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >黄瓜特征场景中的应用条件

黄瓜特征场景中的应用条件
EN

Stack Overflow用户
提问于 2017-07-17 09:14:44
回答 2查看 5.7K关注 0票数 0

我将如何使用Cucumber Java和Selenium来处理以下场景:

代码语言:javascript
复制
  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“是一个变量,它依赖于单选按钮或下拉菜单。如何在条件下实现黄瓜特征文件和步骤定义类方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-17 11:02:08

背景

黄瓜特性文件都是为了弥合业务和开发团队之间的会话鸿沟,因此,代码和条件语句不应该出现在它们的内部。

解决方案

解决问题的方法是如何编写步骤定义。

以Cucumber的Ruby实现为例:

代码语言:javascript
复制
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

这将代码和条件语句从特性文件中提取出来,它本质上是对应用程序/系统行为的实时文档。

进一步改进

但我也要修改这一步的措辞:

代码语言:javascript
复制
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          |

这将从实现(例如,下拉列表、广播框或文本框)中移开一步,更接近于系统的现有行为--此场景突出显示的特性是,您应该能够提出发票,而不是在选中框中列出可供选择的选项列表。

票数 3
EN

Stack Overflow用户

发布于 2017-07-17 19:50:24

重要的是这两种发票类型的区别。每种类型对您的业务都很重要,所以我会为每种类型创建一个步骤。

When I raise an ABC invoiceWhen I raise an XYZ invoice

在实现步骤定义时,我可能会考虑使用相同的辅助方法来减少代码。

代码语言:javascript
复制
When I raise an ABC invoice' do
  raise_invoice type: 'abc'
end

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

然后让一个助手方法来处理如何提高发票。

代码语言:javascript
复制
def raise_invoice(type: )
  click_radio('invoice', type)
end

这为您提供了非常简单的步骤定义、没有条件或步骤防御中的其他复杂情况,以及处理浏览器中的交互的简单方法。

注以上所有代码均为伪代码/ruby。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45140226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档