Lettuce:从步骤定义调用步骤

我们的测试应该尽可能的表达清晰。不过,我们还想重新使用我们以前的步骤。到目前为止,我们使用过的工具,你可能会得到很长的步骤定义。

Scenario: Logged-in user does something cool.
  Given I go to the home page
  And I click the login button
  And I fill in username:floppy password:banana
  And I click "Login"
  When I finally do something interesting
  Then I'm already too bored to care.

在这种情况下,我们可能有一个测试用例(可能是几个),它实际上是用来表达用户如何与登录表单交互的。在这里,我们得到了登录顺序的步骤定义。然而,当登录表单有意义时,这些步骤就非常多余。我们真的希望能够在不重复我们的步骤定义的情况下定义这样的东西。

Scenario: Logged-in user does something cool.
  Given I am logged in
  When I do something interesting
  Then The world becomes a better place

Lettuce提供了这样一种方式,可以用一组助手来匹配每一个给定的语法术语-Given,When和Then。你可以像这样完成以上的工作。

@step('I am logged in')
def is_logged_in(step):
    step.given('I go to the home page')
    step.given('I click the login button')
    # ... and so on.

步骤执行块

有时甚至直接从特性规范复制粘贴,去描述步骤执行块。使用step.behave_as方法,然后用str.format动态填写参数。例如,我们可以这样写上面的步骤定义:

@step('I am logged in')
def is_logged_in(step):
    step.behave_as("""
        Given I go to the home page
          And I click the login button
          And I fill in username:{user} password:{pass}
          And I click "Login"
    """.format(user='floppy', pass='banana'))

这可以与步骤参数捕获相结合,使表达更清晰和避免代码重复。


上一篇:Lettuce: Scenario Outlines
下一篇:Lettuce: Command Line

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,853评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,935评论 25 708
  • 要想短时间内确定一个潜在或正在交往的人是否合适,很简单:和Ta一起去一个陌生的地方旅行,至少三天。 钱钟书在《围城...
    安慰记心理小店阅读 666评论 2 12
  • 复习:退货 I'd like to return this sweater, please. 我想退掉这件毛衣。 ...
    0c05e63bafa4阅读 334评论 0 0
  • 今晚做了两个蔬菜和一个鸡蛋面,喜欢这种为了美味准点回家的心情,一天的种种,在最喧嚣的地方得以松弛下来,你来我往之间...
    等一朵花盛开的时间阅读 212评论 0 0