BDD 工具:Behave 一个小槽点

2016-06-28  籽藤 

行为驱动开发,BDD 工具还是值得一玩的。现在用 python 多一些,就说说 python 的 BDD 工具—— Behave 的一个槽点吧。

下面是一个 feature 文件的例子,

Feature: Query for ticket

Scenario Outline: Query by station
Given the user visit the index page
When the user enter <from_station>
And the user enter <to_station>
And the user submit
Then the list will be appeared

Examples:
            | from_station | to_station |
            | shanghai    | beijing |
            | beijing   | shanghai |

加粗的两行就是出错的地方。因为 feature 文件是自然语言描述场景的,这样看不觉得有问题。但是在用 python 进行 step definition 的时候,就会这样:

@when('the user enter {from_station}')
def enter_from_station_name(context, from_station):
pass

@when('the user enter {to_station}')
def enter_to_station_name(context, to_station):
pass

虽然这两个 function 的名字是不同的,但是因为“@when”中定义的步骤相同,即便有变量名 {from_station} {to_station} 的区别,behave 还是会报错:

behave.step_registry.AmbiguousStep: @when('the user enter {to_station}') has already been defined in
  existing step @when('the user enter {from_station}') 

这算是一个小 trick 吧~ 为了解决这个问题,我只得把步骤描述调整了一下,比如“the user enter <from_station> firstly”。

536°/5367 人阅读/0 条评论 发表评论

登录 后发表评论