Перейти к содержимому

Фотография

Примитивные тесты выполняются крайне медленно


  • Авторизуйтесь для ответа в теме
В теме одно сообщение

#1 cmygeHm

cmygeHm

    Новый участник

  • Members
  • Pip
  • 2 сообщений
  • ФИО:Артуров Артур Артурович

Отправлено 19 сентября 2011 - 13:32

Физкульт-привет Тестер-ворлд!
Учусь писать тесты. Сделал первый "Hello World":
<?php

require_once 'Testing/Selenium.php';
require_once 'PHPUnit/Autoload.php';

class GoogleTest extends PHPUnit_Framework_TestCase
{
  private $selenium;
  
  public function setUp()
  {
    $this->selenium = new Testing_Selenium("*googlechrome", "http://www.google.ru/");
    $this->selenium->start();
  }

  public function tearDown()
  {
    $this->selenium->stop();
  }

  public function testGoogle()
  {
    $this->selenium->waitForPageToLoad(0); // на эту строчку коситься не надо, без нее тоже самое
    $this->selenium->open('/');
    $this->selenium->type('q', "Hello world");
    $this->selenium->click("btnG");
    $this->selenium->waitForPageToLoad(1000);
    $this->assertRegExp("/Поиск в Google/", $this->selenium->getTitle());
  }
}

?>

Заметил, что между вызовами

$this->selenium->open('/');
$this->selenium->type('q', "Hello world");
$this->selenium->click("btnG");
крайне длинные паузы, вроде бы одинаковые, примерно по минуте.
Обсуждалось здесь: http://software-test...um/topic/19931/ , но итоги оттуда не извлечь.
Подскажите, пожалуйста, в чем проблема?
Спасибо.



Ответ: для тех кто установил Testing/Selenium версии 0.4.4 этот баг фиксится следующим образом:
из под рута правим файл /usr/share/php/Testing/Selenium.php (у меня он лежит здесь, у Вас путь может отличаться), в самом конце файла правим функцию doCommand:

protected function doCommand($verb, $args = array())
    {
        $url = sprintf('http://%s:%s/selenium-server/driver/?cmd=%s', $this->host, $this->port, urlencode($verb));
        for ($i = 0; $i < count($args); $i++) {
            $argNum = strval($i + 1);
            $url .= sprintf('&%s=%s', $argNum, urlencode(trim($args[$i])));
        }

        if (isset($this->sessionId)) {
            $url .= sprintf('&%s=%s', 'sessionId', $this->sessionId);
        }

        if (!$handle = fopen($url, 'r')) {
            throw new Testing_Selenium_Exception('Cannot connected to Selenium RC Server');
        }

        stream_set_blocking($handle, 1);  // правим вот эту строку! Ставим НОЛЬ вместо 1
        $response = stream_get_contents($handle);
        fclose($handle);

        if (!preg_match('/^OK/', $response)) {
            throw new Testing_Selenium_Exception('The Response of the Selenium RC is invalid: ' . $response);
        }

        return $response;
    }
И все будет шикарно работать!
  • 0

#2 cmygeHm

cmygeHm

    Новый участник

  • Members
  • Pip
  • 2 сообщений
  • ФИО:Артуров Артур Артурович

Отправлено 20 сентября 2011 - 06:32

.
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных