Как написать функциональные тесты для веб-приложения Yii, которые будут запущены на сервере селена?
В настоящее время я настраиваю среду разработки для своего нового проекта, и я очень много думаю об одном. Я планирую использовать Yii. Я хочу, чтобы функциональные тесты были автоматизированы, у меня уже есть геррит и Дженкинс, работающие.
Я прочитал эту заметку и выяснил, что селен имеет что-то вроде html suite. Я никогда не слышал об этом раньше, я всегда писал свои тесты для запуска через PHPUnit. Я использовал стандартную функциональную тестовую среду Yii как описано здесь.
Итак, мой вопрос: каковы плюсы и минусы обоих подходов? Я уже могу подумать об одном про и con html suite. Pro - это то, что написание тестов очень просто - вы просто "click" их в Selenium IDE. Кон, что я, вероятно, придется запускать db-приборы перед тестированием, и я не мог их изменить, или запускать их как: - загрузить приборы, запустить тест, загрузить оснастку, запустить тест, но я думаю, что это сделало бы тесты sloppier. Как вы думаете, каков ваш опыт в этом вопросе?
Ответы
Ответ 1
существует простой способ для написания функциональных тестов.
вы можете downlaod addon для selenium IDE, а затем добавить php formatter для этого аддона, и вы можете делать и экспортировать функциональные тесты очень eeeasy.
тогда вы должны настроить защищенные /config/test.php и protected/tests/bootstrap.php
вам следует, вероятно, отредактировать protected/tests/phpunit.xml и удалить любой браузер, кроме fire fox.
тогда сделайте так, как сказал Виллем Рензема, и измените тест, сделанный этим аддоном, и измените имя класса на WebTestCase и удалите setUp()
тогда вы готовы к запуску тестов!
веселит
Ответ 2
Два пакета, которые хорошо интегрированы с Yii, - PhPUnit и Selenium Remote Control. Таким образом, эти два более распространены между разработчиками Yii.
Что касается развертывания функционального теста, я не уверен, насколько глубоко вы хотите идти, но насколько я его использовал, это было довольно легко. Функциональные тесты - это буквально классы php, которые распространяются от CWebTestCase.
Описание класса Yii CWebTestCase
Соглашение об именах - вы должны называть вас классом, заканчивающимся Test, например ExampleTest.php, и хранить файлы под защитой /test/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]','[email protected]');
$this->type('name=ContactForm[subject]','test subject');
$this->click("//input[@value='Submit']");
$this->waitForTextPresent('Body cannot be blank.');
}
}
Это все, что я знал об этом, и надеюсь, что это помогло.