并行运行behat测试(在两个浏览器窗口中)

时间:2014-10-15 13:30:00

标签: symfony selenium-webdriver behat mink

我以this blog为例,阅读ParallerRunner信息。当我调用bin/behat命令时,会打开一个浏览器窗口并使用以下设置成功运行所有测试。

的symfony / behat.yml

default:
    context:
        class: Site\CommonBundle\Features\Context\FeatureContext
    extensions:
        Behat\Symfony2Extension\Extension:
            mink_driver: true
            kernel:
                env: test
                debug: true
        Behat\MinkExtension\Extension:
            base_url: 'http://symfony.local/app_test.php/'
            javascript_session: selenium2
            browser_name: firefox
            goutte: ~
            selenium2: ~
    paths:
        features: %behat.paths.base%/src
        bootstrap: %behat.paths.features%/Context

我修改了behay.yml(如下所示),在一个浏览器窗口中运行一些测试,在另一个窗口中运行一些测试,但是它没有这样做。它的作用是,它打开两个浏览器窗口,但它们都运行相同的测试!我怎样才能克服这个问题?

的symfony / behat.yml

default:
    context:
        class: Site\CommonBundle\Features\Context\FeatureContext
        parameters:
            output_path: %behat.paths.base%/build/behat/output/
            screen_shot_path: %behat.paths.base%/build/behat/screenshot/
    extensions:
        Behat\Symfony2Extension\Extension:
            mink_driver: true
            kernel:
                env: test
                debug: true
        Behat\MinkExtension\Extension:
            base_url: 'http://symfony.local/app_test.php/'
            files_path: %behat.paths.base%/build/dummy/
            javascript_session: selenium2
            browser_name: firefox
            goutte: ~
            selenium2: ~
        shvetsgroup\ParallelRunner\Extension:
            process_count:  2
    paths:
        features: %behat.paths.base%/src
        bootstrap: %behat.paths.features%/Context

F1:
    filters:
        tags: "@backend"
F2:
    filters:
        tags: "@frontend"

BEHAT TESTS:

这应该在一个窗口中运行:

@frontend
Feature: User Login

  @javascript
  Scenario: I can login to the system
    Given I am on "/login"
    And I login as "user"

这应该在另一个窗口中运行:

@backend
Feature: Admin Login

  @javascript
  Scenario: I can login to the system
    Given I am on "/login"
    And I login as "admin"

2 个答案:

答案 0 :(得分:1)

我使用GNU Parallel和xargs设置并行测试执行。 还为所有已执行的功能实施综合报告。 我这里的文章详情:
http://parallelandvisualtestingwithbehat.blogspot.com/p/blog-page.html

答案 1 :(得分:1)

[{'time', 'task', 'current', 'element'}, {'task', 'push', 'stack', 'element'}]

find ./features -name "*.feature" | parallel --gnu --halt-on-error=0 -j 3 --keep-order vendor/bin/behat -c src/my_directory/behat.yml 的可能性是:

  • 0如果作业失败,请不要暂停。退出状态将是工作数量 失败了这是默认设置。

  • 1如果作业失败,请不要启动新作业,而是要完成运行 包括清理工作。退出状态将是来自的退出状态 最后失败的工作。

  • 2立即终止所有作业,然后不进行清理就退出。出口 状态将是失败作业的退出状态。

--halt-on-error:并行运行3个作业

它与硒完美配合。