如何运行特定的Behat场景

时间:2016-03-24 04:31:48

标签: php behat

我试图从命令行运行特定的Behat场景,这就是我正在做的事情:

 this.onWsMessage = function(packet) {
    log('Message Received from ');
    if (cmd != '') {
      log('----------------------------------------->' + cmd);
      source[this.getId()].sshStream.write(cmd + '\n');
    }

  };

 var client = clients[cid];
sshClient
  .on('ready', function() {
    console.log('CONNECTED');
    sshClient.shell({pty: true}, function(err, stream) {
      _shellHandler(err, stream, client);
    });
  })
  .on('error', function(err) {
    console.log('ERROR', err);
  })
  .connect(serverInfo);
  }

function _shellHandler(err, stream, client) {
source[client.getId()].sshStream = stream;
stream
  .on('close', function() {
    log('ssh connection close');
    //sshClient.end();
    this._client.end();
  })
  .on('data', function(data) {
    console.log(stream);
    var msg = data.toString().replace(msgPattern, '');
    this.sendUTF(msg, 'ssh');

  }.bind(client));


  }

然而,这并没有结束这个场景。

如果我跑

$ bin/behat features/features/baseline.feature:3

我可以运行整个功能文件。

这里是文件的样子 - 我尝试运行的场景在我的文本编辑器的第3行:

bin/behat features/features/baseline.feature

3 个答案:

答案 0 :(得分:32)

首先,您应该添加功能文件的完整描述,例如:

Feature: Home page functionality
  In order to use application functionality
  As a website user
  I need to be able see the home page

Scenario也应该有描述。

您可以使用标记运行behat场景:

bin/behat --tags @api

基本上每个Scenario都有自己的标签。 Behat命令将尝试查找具有@api标记的所有方案。

您还可以为整个Feature文件指定标记:

@whole-feature-file
Feature: Home page functionality

使用部分名称运行场景:

bin/behat --name="element of feature"

或者根据@greggles评论:

指定要素文件名称和行号,例如

bin/behat features/file.feature:123 

其中123是Scenario: Clear cache

之类的行号

有关详细信息,请参阅behat docs

答案 1 :(得分:1)

我发现只有在执行特定方案时才必须使用功能文件的完整路径。例如,如果您的要素文件位于/ var / www / html / tests / features / features中,而您在/ var / www / html / tests中则尝试此命令:

{
    "data": [
        {
            "item": "book",
            "date": "9.10."
        },
        {
            "item": "apple",
            "date": "10.10."
        },
        {
            "item": "pen",
            "date": "11.10."
        }
    ]
}

答案 2 :(得分:0)

发现您可以简单地使用任何自定义标签(例如@foobar)标记方案。

Feature:
  @api @foobar
  Scenario: Clear cache
    Given the cache has been cleared
    When I am on the homepage
    Then I should get a "200" HTTP response

  Scenario:
    Given I am not logged in
    When I am on the homepage
    Then I should see the text "We love our users"

然后仅在以下情况下运行:

behat --tags foobar