capybara是一个简单的API,它提供了抽象层在你真实自动化库之上。如果它帮助,认为capybara是你的翻译,你告诉它做一些事情,它将优雅的将命令转换为你应用驱动的API。
所以当我们使用capybara进行翻译时,我们需要告诉capybara做什么并且需要一个API自动化库去进行翻译。
capybara是一个非常灵活的库,
通过这本书我们将看到它在各种场景中应用。然而。目前为止最常见的情景是应用cucumber作为capybara测试驱动,去驱动selenium webdriver 开展浏览器自动化。
当cucumber被调用来解析这些简单易懂的英语场景时,它将使用正则表达式去将这些匹配
cucumber介绍
cucumber是一种可以使用文本描述语言来执行自动测试用例的工具,使用的语言叫做Gherkin.
Gherkin用于描述软件的行为而不需要了解具体的实现,使用Gherkin主要有两个目的文档和自动测试用例(我们希望能够和手工测试用例也统一)。 Gherkin支持超过40种语言,包括英文、中文。 Gherkin可以在任何地方新增注释,注释以#开头,每一个文件都是已.feature结尾,在feature文件中输入功能描述、场景、步骤,当执行这个功能时每一个步骤都需要编写ruby代码块来实现具体的功能,当前cucumber支持多种语言,除了ruby还可以使用java、javascript来编写具体定义层的实现。
以下是一个cucumber 场景的例子
Feature: Search for Videos on Baidu
Scenario: Search for Videos
Given I am on the baidu home page
When I search for "capybara"
Then search result are returned
我们设置可以采用中文实现场景
中文的话最前面必须增加# language: zh-CN
|
|
下面的流程图说明了从cucumber到底层驱动如何实现,capybara在整个流程里面充当是中间价的作用。
安装
如果你使用的是 bundler,只是需要添加以下代码到Gemfile:
|
|
初始化features目录:
查看完帮助列表:
运行所有features:
Cucumber-Rails
如果你使用capybara 来测试rails应用,你应该安装cucumber-rails gem 而不是标准的rails gem。
这个gem需要capybara和cucumber作为依赖。
所以当你安装cucumber-rails gem时,会自动安装这些依赖,我们只需要运行以下命令
如果你使用bundle,只需要将以下代码添加进gemfile:
然后运行
运行生成器帮助我们生成目录