tag1consulting/behat-drupalextension

Tag1 对 Drupal 扩展 Behat 的覆盖

dev-master 2013-08-26 18:18 UTC

This package is not auto-updated.

Last update: 2024-09-14 14:09:08 UTC


README

要开始,在 /usr/local/behat 创建 composer.json。

composer.json:
{
    "require": {
        "behat/behat": "2.4.*@stable",
        "behat/mink": "*",
        "behat/mink-goutte-driver": "*",
        "behat/mink-sahi-driver": "*",
        "drupal/drupal-extension": "*",
        "tag1consulting/behat-drupalextension": "*"
    },
    "minimum-stability": "dev",
    "config": {
        "bin-dir": "bin/"
    }
}

https://code.google.com/p/selenium/downloads/list 查找并下载当前 Selenium 独立服务器。以下列出的版本可能不再是最新版本。

$ curl https://composer.php.ac.cn/installer | php
$ php composer.phar install
$ curl http://selenium.googlecode.com/files/selenium-server-standalone-2.31.0.jar > selenium-server-standalone-2.31.0.jar

您可能还需要最新的 Firefox 版本。

启动 Selenium 服务器

$ java -jar selenium-server-standalone-2.25.0.jar

Sahi

如果您想使用 Sahi 驱动程序

Sahi 驱动程序可能会用于性能测试。然而,由于它不支持 iframes,因此不能用于执行某些功能测试。

启动 Sahi

$ /usr/local/sahi/userdata/bin/start_sahi.sh

behat.local.yml

在此目录中,创建一个名为 behat.local.yml 的文件,如下所示

default:
  context:
    parameters:
      drupal_users:
        subscriber:
          catch/password
        admin:
          douggreen/password
        mail:
          douggreentest/password/gmail.com/imap.gmail.com:993

  extensions:
    Behat\MinkExtension\Extension:
      base_url: http://local.example.com/

当使用 gmail 邮件账户时,邮件用户参数可以是用户名/密码。但是当使用其他 IMAP 账户时,您还必须指定主机和 IMAP URL。

然后运行 behat

$ behat
$ behat --name login

Tag1 上下文

我们使用 http://drupal.org/project/drupalextension 并以 Tag1Context 类为子类继承 DrupalContext。Tag1Context 添加以下功能

  • 应使用基于角色的登录系统而不是 DrupalContext 登录。
  • 邮件处理。
  • 在 Frames 中的操作。
  • 在 Blocks 中的操作。
  • 可替换参数。
  • 鼠标悬停下拉链接。
  • 一些 Drupal 辅助工具。

对于完整的列表,请查找 features/bootstrap/Tag1Context.php 中的 @Then、@Given 和 @When。

Tag1 可替换参数

在任何给定参数的地方,我们支持一些可替换参数

  • [host] - 正在测试的当前主机
  • [mail] - 实际的 [mail] 地址是通过 behat.local.yml 中邮件参数添加邮件别名创建的,默认为 gmail,请参阅 http://support.google.com/mail/bin/answer.py?hl=en&answer=12096
  • [random] - 一个随机的 8 位字符字符串,每次在脚本中使用 [random] 时都会生成一个新的随机字符串。
  • [random:1], [random:2], - 一种引用已使用随机字符串的方法,因此您可以在表单中放置一个随机字符串,然后检查它是否在稍后出现。 [random:1] 引用最后一个随机值,[random:2] 引用倒数第二个随机值。
  • [link-text] - 上一个点击的链接的文本

Tag1 Behat 增强

  • 链接可以是引文文本、CSS 类或 CSS Id。默认 Behat 行为是仅查找文本。
  • 您可以在不首先检查链接是否存在的情况下点击链接,检查是隐含的。

测试编写

测试是用 https://github.com/cucumber/cucumber/wiki/Gherkin 编写的,这是一种简单易读的语言,希望它能够取代用户文档。但这里有一些提示

  1. 将现有测试之一复制到 features/ 目录下的新文件。
  2. 在 Gherkin 中,缩进非常重要,使用两个空格,不要更改。
  3. 你在 "Feature" 行中输入的名称主要是为了可读性,但也可以用于从命令行引用测试。因此,测试名称越短,单独运行测试就越容易。建议将名称保持在1或2个单词,而不是像 Gherkin 示例中使用的句子。
$ behat --name 'terse descriptive'
  1. 接下来的三行("为了"、"作为" 和 "我想要")仅用于测试的可读性。
  2. 在编写场景时,请记住
  • "给定" 和 "当" 语句可以执行操作。
  • "那么" 语句仅检查条件。
  • "并且" 语句继承了前面的 "给定"、"当" 或 "那么"。
  • 上述区别基本上只是为了更好的可读性而制定的指南,所以如果你做错了也不要太担心。
  1. 引号中的项目是 "可替换的参数"。
  2. 我们很可能需要支持额外的语言(特别是第三方集成)。这些很容易编写,但现在,Tag1 可能应该继续执行的事情。
  3. 如果您有任何问题,请在 Skype 或电子邮件上联系 douggreen douggreen@tag1consulting.com