6

나는 개념이 잘못되었거나 올바르게 생각하고 있지 않을 수도 있다고 생각합니다. 나는 db에 연결하는 방법을 찾고 테이블의 모든 행에 대해 셀 룰룸 테스트를 실행한다. 이 테스트에서는 주문한 CMS에서 깨진 이미지를 확인하고 모든 CMS에 적용 할 수 있습니다.여러 테스트 코드화, 1 스크립트

기본적으로 db의 ID를로드 한 다음 각 ID에 대해 별도의 테스트를 실행하여 특정 유형의 모든 페이지에 대한 승인 테스트를 실행하려고합니다.

이것은 내가 지금까지 무엇을 가지고 :

$I = new WebGuy($scenario); 
$results = $I->getArrayFromDB('talkthrough', '`key`', array()); 
foreach ($results as $r) { 
    $I->wantTo('Check helpfile '.$r['key'].'for broken images'); 
    $I->amOnPage('/talkThrough.php?id='.$r['key']); 
    $I->seeAllImages(); 
} 

(가 많은 주장 1 개 테스트로 실행되기 때문에)이 그것이 첫 번째 실패 할 때까지 실행 점에서 어느 정도 작동합니다.

개별 테스트로 어떻게 실행합니까?

답변

3

나는 쉼표로 구분 된 문자열에서 실패한 키를 저장하고 루핑을 끝내고 bool이 실패를 발견했다고 설정했다. 나는 모든 테스트를 하드 코딩하는 것을 주장 할 것이다 나의 webhelper로 제출 된 답변

+0

불행히도 여러 개의'wantTo()'호출은 내가 찾은 별도의 테스트를 생성하지 않습니다. –

1

그건 효과가 없습니다. 테스트에서 루프와 조건문을 피하십시오. key을 수동으로 배치해야합니다. 데이터베이스에서 가져 오지 마세요. 추가 복잡성을 초래하기 때문에.

+0

에 대한

<?php namespace Codeception\Module; // here you can define custom functions for WebGuy class WebHelper extends \Codeception\Module { function checkAllImages() { $result = $this->getModule('Selenium2')->session->evaluateScript("return (function(){ return Array.prototype.slice.call(document.images).every(function (img) {return img.complete && img.naturalWidth > 0;}); })()"); return $result; } function getArrayFromDB($table, $column, $criteria = array()) { $dbh = $this->getModule('Db'); $query = $dbh->driver->select($column, $table, $criteria); $dbh->debugSection('Query', $query, json_encode($criteria)); $sth = $dbh->driver->getDbh()->prepare($query); if (!$sth) \PHPUnit_Framework_Assert::fail("Query '$query' can't be executed."); $sth->execute(array_values($criteria)); return $sth->fetchAll(); } function seeBrokenImages($bool,$failArray) { $this->assertFalse($bool,$failArray); } } 

감사를 다음과 같이

$I = new WebGuy($scenario); $results = $I->getArrayFromDB('talkthrough', ''key'', array()); $failures = "Broken help files are: "; $failures_found = false; foreach ($results as $key => $r) { $I->wantTo('Check helpfile '.$r['key'].'for broken images'); $I->amOnPage('/talkThrough.php?id='.$r['key']); $allImagesFine = $I->checkAllImages(); if($allImagesFine != '1') { $fail = $r['key'].","; $failures.= $fail; $failures_found = true; } } $I->seeBrokenImages($failures_found,$failures); 

유지 보수가 고통스럽고 힘든 있습니다. 테스트에서 루프와 조건부에 근본적으로 잘못된 점이 있습니까? –

0

하면 최고의 디자인 선택이되지 않을 수도 있습니다,하지만 당신은 정말이 방법을 따르십시오 일 어설 션이 실패하는 경우에도 당신은 계속 실행 테스트를 허용하기 위해, codeception에서 지정 도구를 사용할 수 있습니다 https://github.com/Codeception/Specify