【问题标题】:markTestSkipped() not working with sausage-based Selenium tests via Sauce LabsmarkTestSkipped() 不适用于通过 Sauce Labs 进行的基于香肠的 Selenium 测试
【发布时间】:2013-08-30 10:26:58
【问题描述】:

我正在使用 sausage 框架通过 Sauce Labs 运行基于 phpunit 的并行化 Selenium Web 驱动程序测试。一切正常,直到我想通过 markTestSkipped() 将测试标记为已跳过。我已经通过两种方法尝试过:

在测试方法本身中设置markTestSkipped():

class MyTest
{
    public function setUp()
    {
        //Some set up
        parent::setUp();
    }
    public function testMyTest()
    {
        $this->markTestSkipped('Skipping test');
    }
}

在这种情况下,测试会被跳过,但只有在执行 setUp 之后才会跳过,这会为跳过的测试执行大量不必要的工作。最重要的是,phpunit 不会跟踪已跳过的测试——事实上它根本不跟踪测试。我得到以下输出:

Running phpunit in 4 processes with <PATH_TO>/vendor/bin/phpunit

Time: <num> seconds, Memory: <mem used>

OK (0 tests, 0 assertions)

另一种方法是在setUp方法中设置markTestSkipped():

class MyTest
{
    public function setUp()
    {
        if (!shouldRunTest()) {
            $this->markTestSkipped('Skipping test');
        } else {
            parent::setUp();
        }
    }
    protected function shouldRunTest()
    {
        $shouldrun = //some checks to see if test should be run
        return $shouldrun;
    }
    public function testMyTest()
    {
        //run the test
    }
}

在这种情况下,setUp 会被跳过,但测试仍然无法跟踪已跳过的测试。 phpunit 仍然返回上述输出。任何想法为什么 phpunit 在以这种方式执行时不跟踪我跳过的测试?

【问题讨论】:

    标签: selenium phpunit automated-tests skip saucelabs


    【解决方案1】:

    目前看来,在使用 paratest 时,不支持在 PHPunit 中记录 markTestSkipped() 和 markTestIncomplete() 结果。更准确地说,PHPunit 不会记录调用 markTestSkipped() 或 markTestIncomplete() 如果设置了 arguments['junitLogfile'] 的测试——并且 paratest 使用 junitLogfile 调用 PHPunit。

    欲了解更多信息,请参阅:https://github.com/brianium/paratest/issues/60

    我想我可以破解 phpunit 或 paratest...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      • 2012-06-24
      • 2014-05-02
      • 2018-01-01
      • 2021-09-23
      相关资源
      最近更新 更多