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 
Made with Slides.com