Codeception 훑어보기
Modern PHP User Group 4월 모임
오퍼니티 이현석
CodeCeption 은
BDD-Styled
PHP 테스팅 프레임워크
BDD?
Behaviour-Driven Development
login 버튼을 누르면 /login 페이지로 이동하는지 테스트 할 수 있다
레거시 코드에 테스트를 끼얹기 좋은 도구!
라고 생각합니다.
간단한 시나리오를 통해 알아봅시다
/로 접근시 로그인 안되어 있으면 /login.php로 이동
로그인
/로 접근시 로그인 되어있으면 /home.php 로 이동
회원가입
Composer로 설치
composer require "codeception/codeception:*"
Initializing
codecept bootstrap
인수테스트 URL 설정
tests/acceptance.suite.yml
config:
PhpBrowser:
url: 'http://myappurl.local'
시나리오
/로 접근시 로그인 안되어 있으면 /login.php로 이동
로그인
/로 접근시 로그인 되어있으면 /home.php로 이동
회원가입
Test Formats
Cept
Cest
Test
시나리오 기반
클래스 기반
테스트가 길어서 분리하고 싶을 때 쉽게 클래스로 분리해낼 수 있다.
유닛테스트
Generators
generate:cept suite filename - 샘플 Cept 시나리오 생성
generate:cest suite filename - 샘플 Cest 테스트 생성
generate:test suite filename - 샘플 PHPUnit 테스트 생성
codecept generate:cest acceptance Index
실행
codecept run
테스트 포맷별 실행
codecept run acceptance
codecept run functional
codecept run unit
테스트할 폴더 지정
codecept run tests/acceptance/backend
테스트할 파일 지정
codecept run acceptance SigninCept.php
codecept run tests/acceptance/SigninCept.php
클래스에서 하나만 테스트
codecept run tests/acceptance/SigninCept.php:anonymousLogin
단계별 상세 결과 보기
vendor/bin/codecept run acceptance --steps
리포트 생성
vendor/bin/codecept run --xml --html
tests/_output/ 폴더에 생성됨.
디버깅
vendor/bin/codecept run --debug
시나리오
/로 접근시 로그인 안되어 있으면 /login.php으로 이동
로그인
/로 접근시 로그인 되어있으면 /home.php로 이동
회원가입
codecept generate:cest acceptance Login
시나리오
/로 접근시 로그인 안되어 있으면 /login.php로 이동
로그인
/로 접근시 로그인 되어있으면 /home.php로 이동
회원가입
Refactoring
/classes/TestCommons.php
/tests/_bootstrap.php
시나리오
/로 접근시 로그인 안되어 있으면 /login.php로 이동
로그인
/로 접근시 로그인 되어있으면 /home.php로 이동
회원가입
DB 모듈
DB 와 상호작용
매 테스트 마다 데이터 초기화
DB 모듈 세팅
tests/acceptance.suite.yml 에 Db 추가
DB 모듈 세팅
codeception.yml 에 Db 설정
dump: 테스트 db. utf8로 dump 해야 함
populate: 매 테스트 마다 db 초기화할 건지 여부
cleanup: 매 테스트 끝날 때마다 db 초기화할 건지 여부
codecept generate:cest acceptance Signin
Testing Webservices
REST
SOAP
API 테스트를 해봅시다
API suite 를 만듭니다.
codecept generate:suite api
tests/api.suite.yml
API suite 설정
REST 모듈을 쓰려면 PhpBrowser 모듈을 먼저 로드해야 한다고 합니다.
codecept generate:cest api GetSiteInfo
Codeception 훑어보기
By Hyun-Seok Lee
Codeception 훑어보기
BDD 스타일 테스트 프레임워크 Codeception 사용법을 간단한 시나리오를 통해 알아봅니다.
- 2,362