XE 오픈세미나
2015. 4. 29
오퍼니티 이현석
https://github.com/smartbos/codeception_practice
sample.sql 을 이용해서 db를 만들어주세요.
db 설정은 setup.php 에서 수정해주세요.
윈도우는 vendor/bin/codecept.bat bootstrap
config:
PhpBrowser:
url: 'http://myappurl.local'
시나리오 기반
클래스 기반
테스트가 길어서 분리하고 싶을 때 쉽게 클래스로 분리해낼 수 있다.
유닛테스트
generate:cept suite filename - 샘플 Cept 시나리오 생성
generate:cest suite filename - 샘플 Cest 테스트 생성
generate:test suite filename - 샘플 PHPUnit 테스트 생성
codecept generate:cept acceptance {NAME}
$I->amOnPage('/')
첫페이지(/)에 있다
$I->seeInTitle('첫 페이지')
타이틀에 '첫 페이지'가 있는지 본다.
$I->seeLink('로그인')
로그인이라는 링크가 있는지 본다.
$I->click('로그인')
로그인이라는 이름을 가진 링크를 클릭한다.
id
name
css
xpath
link
class
$I->seeCurrentUrl('login.php')
현재 URL에 login.php가 있는지 본다.
tests/_output/ 폴더에 생성됨.
$I->fillField('email','test1@gameshuttle.kr')
email 필드에 'test1@gameshuttle.kr' 값을 넣는다
사용자의 행동을 에뮬레이션 하지 않지만, 아래의 상황에 유용
codecept generate:cest acceptance {NAME}
DB 와 상호작용
매 테스트 마다 데이터 초기화
tests/acceptance.suite.yml 에 Db 추가
codeception.yml 에 Db 설정
dump: 테스트 db. utf8로 dump 해야 함
populate: 매 테스트 마다 db 초기화할 건지 여부
cleanup: 매 테스트 끝날 때마다 db 초기화할 건지 여부
vendor/bin/codecept build
$I->seeInDatabase('users', ['email' => 'test2@xpressengine.com'])
users 테이블에 email이
test2@xpressengine.com 인 값이 있는지 본다
$I->haveInDatabase('users', ['email' => 'test2@xpressengine.com'])
users 테이블에 email이
test2@xpressengine.com 인 레코드를 추가한다.
테스트 완료 후 자동으로 제거됨.
codecept generate:suite api
tests/api.suite.yml
REST 모듈을 쓰려면 PhpBrowser 모듈을 먼저 로드해야 한다고 합니다.
codecept generate:cest api GetSiteInfo
$I->haveHttpHeader('Content-Type', 'application/x-www-form-urlencoded')
http 헤더에 content-type 값이
application/x-www-form-urlencoded 인지 확인한다
$I->sendGet('siteinfo.php',['userId' => 'user1'])
get 방식으로 siteinfo.php 에 userId 값을 user1로 설정하여 API를 조회한다
$I->seeResponseCodeIs(200)
response code 가 200인지 본다.
$I->seeResponseIsJson()
response 가 Json인지 본다.
$I->seeResponseContains('A')
response 내용에 A가 포함되어 있는지 본다.
java -jar selenium-server-standalone-2.xx.xxx.jar
PhpBrowser 대신 WebDriver를 사용
acceptance.suite.yml
$I->seeInPopup('가나다')
window.alert|window.confirm|window.prompt 에
'가나다'가 있는지 본다.
$I->acceptPopup()
활성화되어 있는 자바스크립트 네이티브 팝업에서 확인을 선택한다.
$I->cancelPopup()
활성화되어 있는 자바스크립트 네이티브 팝업에서 취소를 선택한다.
smartbosslee@gmail.com
페이스북 https://www.facebook.com/leehs
모던PHP 유저그룹 https://www.facebook.com/groups/modernpug