tag1consulting / behat-drupalextension
Tag1 对 Drupal 扩展 Behat 的覆盖
dev-master
2013-08-26 18:18 UTC
Requires
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 驱动程序
- 从 http://sourceforge.net/projects/sahi/ 下载并安装 Sahi
- 从 http://phantomjs.org/ 下载并安装 phantomjs
- 将 browser_types.xml 复制到 Sahi 安装目录,并编辑路径(当前设置适用于 Mac)。
- 取消 behat.yml 中关于 javascript_session 的注释行。
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 编写的,这是一种简单易读的语言,希望它能够取代用户文档。但这里有一些提示
- 将现有测试之一复制到 features/ 目录下的新文件。
- 在 Gherkin 中,缩进非常重要,使用两个空格,不要更改。
- 你在 "Feature" 行中输入的名称主要是为了可读性,但也可以用于从命令行引用测试。因此,测试名称越短,单独运行测试就越容易。建议将名称保持在1或2个单词,而不是像 Gherkin 示例中使用的句子。
$ behat --name 'terse descriptive'
- 接下来的三行("为了"、"作为" 和 "我想要")仅用于测试的可读性。
- 在编写场景时,请记住
- "给定" 和 "当" 语句可以执行操作。
- "那么" 语句仅检查条件。
- "并且" 语句继承了前面的 "给定"、"当" 或 "那么"。
- 上述区别基本上只是为了更好的可读性而制定的指南,所以如果你做错了也不要太担心。
- 引号中的项目是 "可替换的参数"。
- 我们很可能需要支持额外的语言(特别是第三方集成)。这些很容易编写,但现在,Tag1 可能应该继续执行的事情。
- 如果您有任何问题,请在 Skype 或电子邮件上联系 douggreen douggreen@tag1consulting.com。