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

snvhrwxg  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(133)

已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新问题,以便editing this post可以用事实与引用来回答.

11天前关闭。
Improve this question
我目前正在为我的新项目建立一个开发环境,我正在努力思考一件事。我计划使用Yii。我想让功能测试自动化,我已经让gerrit和Jenkins就位,正在工作。
我读了this note,发现Selenium有类似html套件的东西。我以前从来没有听说过它,我总是写我的测试通过PHPUnit运行。我使用默认的Yii功能测试环境as described here
所以我的问题是,这两种方法的优缺点是什么?我已经能想到html套件的一个优点和缺点。优点是,编写测试真的很容易--你只需要在Selenium IDE中“点击”它们。缺点是,我可能必须在测试之前运行db fixture,而我不能更改它们,或者像这样运行它们--加载fixture,运行测试,加载fixture,运行测试,但我想那会使测试变得草率得多。你怎么看/你在这件事上有什么经验?

yhived7q

yhived7q1#

有一个简单的方法来编写功能测试。你可以下载一个selenium IDE的插件,然后为这个插件添加php formatter,你可以非常容易地制作和导出功能测试。
那么您应该配置您的protected/config/test.php和protected/tests/bootstrap.php
您可能应该编辑protected/tests/phpunit.xml并删除FireFox以外的任何浏览器。
然后像Willem Renzema说的那样做,更改此插件所做的测试,将类的名称更改为WebTestCase,并删除setUp()
那么您就可以运行测试了!
欢呼声

9rbhqvlz

9rbhqvlz2#

PhPUnit和Selenium Remote Control这两个包与Yii集成得很好,所以这两个包在Yii开发者中比较常见。
关于部署功能测试,我不确定你想深入到什么程度,但是就我所用的来说,它是相当容易的。功能测试,就是php类,它是从CWebTestCase. Yii CWebTestCase class description扩展而来的。
命名惯例是你必须将类命名为以Test结尾的ExampleTest.php,并将文件存储在protected/tests/functional下。你需要设置所有的东西,包括包,以及更改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.');
}
}

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

相关问题