Lettuce Feature(功能)

除非你用过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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容