【问题标题】:PHPUnit & Selenium2 all cases fail IF one case failsPHPUnit & Selenium2 如果一个案例失败,所有案例都失败
【发布时间】:2013-11-23 08:35:23
【问题描述】:

我正在使用 PHPUnit 和 Selenium2 服务器。我正在使用 PageObject 模式。对于一个页面对象,我得到一个 webdriver 的实例并执行必要的功能。

为了让单个浏览器保持运行,我实现了一个粗略的解决方案,我在网上找到了我在静态类中初始化驱动程序的地方:

class SessionHelper {
    public static $first;
}
SessionHelper::$first = 0;

然后在我的测试用例类setup()方法中;

public function setUp(){
    if (SessionHelper::$first == 0 )
    {
        $this->setHost('localhost');
        $this->setPort((int)4444);            
        $this->setBrowser('firefox');        
        $this->setBrowserUrl('http://domain.com/lucky/web');            
        $this->shareSession(TRUE);
        $this->prepareSession();
        SessionHelper::$first = 1 ;
    }
}

通过这种方式,我设法在单个浏览器中执行所有测试。但是,如果一个测试用例失败;假设通过尝试查找不存在的元素,所有其他测试用例都失败并显示消息“未定义索引:browserUrl”。如果我将其更改为在页面中查找已知元素,则它可以正常工作。比如;

test_method_1 :如果在此测试失败后未找到任何元素并显示“未定义索引:browserUrl”。

如果 test_method_1 正常,其余的测试将执行,直到另一个测试用例失败。

那么,我收到此错误的原因是什么?当一个测试用例失败时,我的会话会被破坏吗?

【问题讨论】:

  • 如果您在 phpunit 引导程序中使用 PHPUnit_Extensions_Selenium2TestCase::shareSession(true); 会怎样?

标签: php phpunit selenium-webdriver


【解决方案1】:

当一个测试用例失败时,您的会话将被破坏:

如果测试不成功(失败),会话将被重置 或不完整);由用户来避免之间的交互 通过重置 cookie 或从应用程序中注销来进行测试 测试(使用 tearDown() 方法)

来自Chapter 17. PHPUnit and Selenium(底部)

方法onNotSuccessfulTestflag 标记会话,将会话设置为空。在下一次测试运行 PHPUnit 调用prepareSession(),但参数为空。这就是在SessionStrategy_Shared 中出现错误“未定义索引”的原因。

你可以写你的onNotSuccessfulTest方法:

public function onNotSuccessfulTest(Exception $e){
    throw $e;
}

有了它,会话不会被破坏。

【讨论】:

  • 是的,我做到了。有测试代码pastebin.com/piXzeeN8。 testGoogle2() - 不成功。输出为:.F。有 1 次失败:1) S2p_GoogleTest:testGoogle2 断言 true 为 false 失败。
  • 谢谢,刚刚测试过,它可以工作。 Reduced sample code with google.
【解决方案2】:

将以下行添加到您的 .xml 文件中,这样即使一个测试用例失败,它也会运行下一个测试。

<phpunit bootstrap="bootstrap.php"
     colors="true"
     convertErrorsToExceptions="true"
     convertNoticesToExceptions="true"
     convertWarningsToExceptions="true"
     stopOnFailure="false">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-08
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多