Всем привет.
grabMultiple - собираю массив значений и в цикле их проверяю на наличие ошибок, тест останавливается при первом failed, как прогнать весь полученный массив, для получения всего списка ошибок, а не только первой - try…catch может какие?
Включаем программиста, не используем в теле цикла явные проверки самого фреймворка, а используем проверки самого языка, собираем в массив все ошибки и после цикла ассертим что он пустой и все.
В цикле у меня
$I->seeResponseCodeIs(200);
проходит по сгенереномым страницам Sitemap
хотел получить сразу весь список ошибок. а не по одной отправлять
у Rest особо и нет не явных проверок
или …
Странно, первый вопрос был связан grabMultiple который относится к WebDriver и PhpBrowser, тут вдруг вырастает откуда-то REST у которого нет grabMultiple. А если по поводу REST, то там есть доступ к такой переменной, как response, в ней содержится результат последнего запроса, вот его и ковыряй.
Сорри что запутал, вопрос не был связан с grabMultiple он там только учавствовал, PhpBrowser & REST связка,
Я хочу понять как сделать так чтобы тест прошел все 100 значений из массива и показал на какой из страниц ошибка, а не выдал ошибку на 4-ом и остановился
$I->amOnPage('/sitemap/');
$aLinkShow = $I->grabMultiple(".class", 'href');
foreach($aLinkShow as $key => $value)
{
$I->amOnPage($value);
$I->seeResponseCodeIs(200);
}
Если хочешь красивый отчет то можно через try … catch:
$I->amOnPage('/sitemap/');
$aLinkShow = $I->grabMultiple(".class", 'href');
$errors = null;
foreach($aLinkShow as $key => $value)
{
$I->amOnPage($value);
try {
$I->seeResponseCodeIs(200);
} catch (Exception $e) {
$errors[] = "URL '$value' dont work!!!";
}
}
$I->assertNull($errors, print_r($errors, true));
Кууул, смотрел в сторону Assert и try…catch крутил но все не то и не там ))
Thank!
Может заменить команды see* на canSee* - тогда даже при фэйле проверки, он проверит все остальные результаты.
Да, но используется Rest module,
через webdriver очень нама долго
Но ведь у REST модуля тоже есть команды canSee*
На сайте codeception’a про это очень мало написано http://codeception.com/docs-2.0/04-AcceptanceTests#Conditional-Assertions , но можешь поискать эти методы у себя в сегенерых:
/tests/_support/_generated/{suiteName}TesterActions.php
По идее, в phpstrom’e у тебя должны подсасываться эти команды, когда ты начнёшь их вводить
canSee* и все методы кроме grab* и get* ничего не возвращают, это чистые Assert, так что они не подходят т.к. проверять нечего!!!
В смысле нечего? Грабить ссылки всё той же коммандой нужно, я говорю про команду, которой проверять респонс код.
$I->amOnPage('/sitemap/');
$aLinkShow = $I->grabMultiple(".class", 'href');
foreach($aLinkShow as $key => $value)
{
$I->amOnPage($value);
$I->canSeeResponseCodeIs(200);
}
Хорошо, а каков будет итоговый результат теста??? Фейл или ОК ?
Если хотябы 1 canSee зафейлит - то и результат у самого теста будет фейл. Я же скидывал ссылку, где можно почитать про эти команды http://codeception.com/docs-2.0/04-AcceptanceTests#Conditional-Assertions
Таки работает.
Спасибо