Производительность PHPUnit / Тайм-аут теста - PullRequest
1 голос
/ 20 июля 2011

Я создаю сценарий тестирования, который проверяет выполнение набора команд. Сценарий тестирования должен дать ему возможность работать в течение определенного времени, прежде чем он не пройдёт тест.

Я нашел PerformanceTestCase на веб-сайте документации PHPUnit, но когда я попытался его использовать, я понял, что это старая функциональность, которая не была включена в новую версию. (Это документ PHPUnit 3.0, а моя версия 3.5).

Есть ли эквивалент в этой функциональности в PHPUnit 3.5 и как его использовать?

Ответы [ 2 ]

7 голосов
/ 21 июля 2011

Ну, вы можете просто сделать что-то вроде

public function testFoo() {
 $tStart = microtime( true );
 // your time critical commands
 $tDiff = microtime( true ) - $tStart;
 $this->assertLessThan( $maxTime, $tDiff, 'Took too long' );
}

Конечно, это означает, что ваши команды не будут прерваны до завершения.

И тесты модулей IMO не предназначены для тестирования производительности.

1 голос
/ 30 января 2012

Сегодня я столкнулся со странной проблемой - мне нужно было проверить, что внешний HTTP-вызов происходил в течение выделенного времени.

Вместо того, чтобы строить другой цикл или брать показания $ start и $ end time - я раскрыл параметр timed_out, подробно описанный здесь http://www.php.net/manual/en/function.stream-get-meta-data.php

while (!feof($fp)) {
    $info = stream_get_meta_data($fp);
    if ($info['timed_out']) {
        $this->timed_out = true;
        fclose($fp);
        throw new Exception("Request timed out");
    }
    else {
        $response .= fgets($fp, 128);
    }
}
fclose($fp);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...