我应该如何为将在selenium服务器上运行的Yii Web应用程序编写功能测试?

Neb*_*ril 20 selenium selenium-ide functional-testing yii htmlsuite

我目前正在为我的新项目建立一个开发环境,我正在考虑一件事.我打算使用Yii.我希望自动化功能测试,我已经有了gerrit和Jenkins,工作.

我读了这篇文章,发现selenium有类似html套件的东西.我之前从未听说过,我总是编写我的测试来通过PHPUnit运行.我使用了这里描述的默认Yii功能测试环境.

所以我的问题是,这两种方法的优点和缺点是什么?我已经可以想到一个html套件的pro和con.Pro是,编写测试非常简单 - 只需在Selenium IDE中"单击"它们即可.问题是,我可能不得不在测试之前运行数据库固件,我无法更改它们,或运行它们 - 加载夹具,运行测试,加载夹具,运行测试,但我想这将使测试更多更模糊.您如何看待/您在这方面的经历是什么?

小智 -1

与 Yii 集成良好的两个软件包是 PhPUnit 和 Selenium Remote Control。所以这两种在 Yii 开发者之间比较常见。

关于部署功能测试,我不确定你想要深入到什么程度,但就我使用的情况而言,它非常简单。功能测试实际上是 php 类,它是从 CWebTestCase 扩展而来的。 Yii CWebTestCase 类描述

命名约定是您必须将类命名为以 Test 结尾,例如 ExampleTest.php,并将文件存储在 protected/tests/function 下。您需要设置所有内容,包括两个软件包以及更改 Yii 配置文件和默认浏览器。如果一切顺利,示例测试可以是这样的:

class ExampleTest extends WebTestCase
{

public function testContact()
{
    $this->open('?r=site/contact');
    $this->assertTextPresent('A string on contact page');
    $this->assertElementPresent('name=ContactForm[name]');
    $this->type('name=ContactForm[name]','tester');
    $this->type('name=ContactForm[email]','tester@example.com');
    $this->type('name=ContactForm[subject]','test subject');
    $this->click("//input[@value='Submit']");
    $this->waitForTextPresent('Body cannot be blank.');
}
}
Run Code Online (Sandbox Code Playgroud)

这就是我所知道的一切,我希望它有所帮助。

  • 谢谢,但您并没有真正编写我提供的链接中不存在的任何内容:http://www.yiiframework.com/doc/guide/1.1/en/test.function (2认同)