美文网首页
Lettuce Feature(功能)

Lettuce Feature(功能)

作者: Ailsa的简书 | 来源:发表于2017-09-19 22:55 被阅读0次

除非你用过Cucumber命名,你可能好奇Lettuce的概念术语。
如果是这样,本文将指导你认识Lettuce非常基本的关键词。

Features

由于Lettuce被用来测试项目的行为,因此行为被分解成系统的功能。
在列举了功能之后,你需要创建场景来描述这些功能。因此,场景是功能的组成部分。
让我们通过示例学习:假设我们想创建一个管理地址簿的系统。
好的,通讯录最基本的特点之一就是增加联系人,其中包括他们的姓名和电话号码。
这是Lettuce怎样来描述特征:

Feature: Add people to address book
  In order to organize phone numbers of friends
  As a wise person
  I want to add a people to my address book

  Scenario: Add a person with name and phone number
    Given I fill the field "name" with "John"
    And fill the field "phone" with "2233-4455"
    When I save the data
    Then I see that my contact book has the persons:
      | name | phone     |
      | John | 2233-4455 |

  Scenario: Avoiding a invalid phone number
    Given I fill the field "name" with "John"
    And fill the field "phone" with "000"
    When I save the data
    Then I get the error: "000 is a invalid phone number"

在这个Feature上面我们可以发现一些元素,例如:
Feature名:

Feature: Add people to contact book

Feature标题

In order to organize phone numbers of friends
As a wise person
I want to add a people to my address book

场景

Scenario: Add a person with name and phone
  Given I fill the field "name" with "John"
  And fill the field "phone" with "2233-4455"
  When I save the data
  Then I see that my contact book has the persons:
    | name | phone     |
    | John | 2233-4455 |

Scenario: Avoiding a invalid phone number
  Given I fill the field "name" with "John"
  And fill the field "phone" with "000"
  When I save the data
  Then I get the error: "000 is a invalid phone number"

场景

一个或多个场景组成一个Feature。有两种场景:

简单的

简单的场景是由步骤组成的,不管它们是简单的还是表式的步骤。
上面的那个特征是由两个简单的场景构成。

概述的

概述的场景非常方便,因为它们帮助你避免重复。
假设我们需要多次填写同一表格,每次使用不同的数据集。下面演示如何使用Scenario Outline(场景概述):
让我们来看看如何做Scenario Outline:

Feature: Apply all my friends to attend a conference
  In order to apply all my friends to the next PyCon_
  As a lazy person
  I want to fill the same form many times

  Scenario Outline: Apply my friends
    Go to the conference website
    Access the link "I will attend"
    Fill the field "name" with "<friend_name>"
    Fill the field "email" with "<friend_email>"
    Fill the field "birthday" with "<friend_birthdate>"
    Click on "confirm attendance" button

  Examples:
    | friend_name | friend_email         | friend_birthdate |
    | Mary        | mary@domain.com      | 1988/02/10       |
    | Lincoln     | lincoln@provider.net | 1987/09/10       |
    | Marcus      | marcus@other.org     | 1990/10/05       |

简单地说,上面的场景相当于下面展示的冗长的代码。

Feature: Apply all my friends to attend a conference
  In order to apply all my friends to the next PyCon_
  As a lazy person
  I want to fill the same form many times

  Scenario: Apply Mary
    Go to the conference website
    Access the link "I will attend"
    Fill the field "name" with "Mary"
    Fill the field "email" with "mary@domain.com"
    Fill the field "birthday" with "1988/02/10"
    Click on "confirm attendance" button

  Scenario: Apply Lincoln
    Go to the conference website
    Access the link "I will attend"
    Fill the field "name" with "Lincoln"
    Fill the field "email" with "lincoln@provider.net"
    Fill the field "birthday" with "1987/09/10"
    Click on "confirm attendance" button

  Scenario: Apply Marcus
    Go to the conference website
    Access the link "I will attend"
    Fill the field "name" with "Marcus"
    Fill the field "email" with "marcus@other.org"
    Fill the field "birthday" with "1990/10/05"
    Click on "confirm attendance" button

正如你所注意到的,Scenario Outline非常有用,帮助避免文本和代码重复。

步骤及其定义

同场景一样,步骤也有两种:

简单的步骤

简单的步骤实际上很简单,它们与场景中的步骤定义有关。
Lettuce认为每个场景的每一行是一个简单的步骤。唯一的例外是,如果该行的第一个非空白字符是管道 |。在这种情况下,Lettuce会认为这个步骤是表格的步骤。
例如,一个简单的步骤可能看起来像这样:

Given I go to the conference website

表格步骤

模拟到概叙的场景,和避免重复文本,表格步骤非常有用。
表格步骤特别有用,可以在场景中设置一些数据集,或者在场景结束时将一组数据与预期结果进行比较。
不管怎样,当你发现它有用,随意使用这个表格步骤。
例子:

Given I have the following contacts in my database
  | name  | phone      |
  | John  | 2233-4455  |
  | Smith | 9988-7766  |

上一篇:Python Lettuce(Cucumber)
下一篇:Lettuce Introduction

相关文章

网友评论

      本文标题:Lettuce Feature(功能)

      本文链接:https://www.haomeiwen.com/subject/mgugsxtx.html