使用 drush 驱动程序提高行为性能

Increase behat performance with drush driver

我在 drupal 安装中 运行 behat inside vagrant。 当我使用 drush 驱动程序时,例如为了对管理员进行身份验证,测试运行得非常慢(2')。 我的 behat.yml 是:

default:
  suites:
    default:
      contexts:
        - FeatureMinkContext
        - FeatureContext:
        - "/vagrant/images/behat"
        - 813
        - 1855
        - Drupal\DrupalExtension\Context\DrupalContext
        - Drupal\DrupalExtension\Context\MinkContext
        - Drupal\DrupalExtension\Context\MessageContext
        - Drupal\DrupalExtension\Context\DrushContext
    extensions:
      Behat\MinkExtension:
      selenium2: ~
      javascript_session: 'selenium2'
      browser_name: firefox
      base_url: http://solar.com/  # Replace with your site's URL
    Drupal\DrupalExtension:
      blackbox: ~
      region_map:
        search: ".form-search"
      api_driver: 'drush'
      drush:
        root: /vagrant/drupal
      selectors:
        message_selector: '.messages'
        error_message_selector: '.messages.messages-error'
        success_message_selector: '.messages.messages-status'
      drupal:
        # Replace with your real Drupal root.
        drupal_root: "/vagrant/drupal"

测试结构:

@javascript @api
Feature: Tests google maps and pois
@maps
Scenario: My tests
  Given I am logged in as a user with the "administrator" role
  ...

没用过 drush 但是,

您需要做的第一件事是确定瓶颈,可能是服务器速度较慢,可能是您使用的某些方法速度较慢,或者您可能有一些不正确的等待。

如果管理员身份验证需要 2',肯定有问题。

运行 场景,调试直到缩小到有问题的方法。

您可以做的其他一些事情是:

  • 从不使用盲目等待,只使用条件等待
  • 如果您必须填写大表格,请尝试使用 javascript 方法进行填写,速度会非常快
  • 尝试不同的浏览器,在我的例子中chrome稍微快一些

是本地站点设置吗?如果是,那么与在实际站点上 运行 相比,Drupal 的 behat 脚本在本地 运行 有点慢。我几乎在每个项目中都遇到过这个问题。对我来说,管理员身份验证的第一步有时需要 5 分钟。增加 RAM 大小在一定程度上减少了这个问题。