Flask	
  Tes)ng	
  
2013-­‐07-­‐16	
  
성대현(DaeHyun	
  Sung)	
  
시작하기 전에	
  
•  Something	
  that	
  is	
  untested	
  is	
  broken	
  
•  테스트하지 않은 것은 고장난다.	
  
TDD	
  
•  테스트주도 개발 Test-­‐Driven	
  Development	
  
•  프로그램을 작성하기 전에 테스트 먼저 하라	
  
Test	
  the	
  program	
  before	
  you	
  write	
  it	
  
•  잘동작하는 깔끔한 코드	
  
Clean	
  code	
  that	
  works	
  
•  질문è응답è정제è반복	
  
AskèRespondèRefineèRepeat	
  
xUnit	
  
•  단위 테스트를 하는데 도움을 주는 프레임워크	
  
xUnit 이름	
   관련언어	
   홈페이지	
  
JUnit	
   Java	
   hOp://www.junit.org/	
  
CUnit	
   C	
   hOp://cunit.sourceforge.net/	
  	
  
CppUnit	
   C++	
   hOp:/sourceforge.net/projects/cppunit	
  
csUnit	
   C#	
   hOp://csunit.org/	
  	
  
Test::Unit	
   Ruby	
   hOp://ruby-­‐doc.org/stdlib/libdoc/test/unit/rdoc/
classes/Test/Unit.html	
  	
  
uniOest	
   Python	
   hOp://docs.python.org/2/library/uniOest.html	
  	
  
Unit	
  TestCase	
  수행 순서	
  
setUp()	
   testXXX()	
   teardown()	
  
테스트 시작	
   테스트 종료	
  
Implemented	
  Code(구현된 코드)	
  
Unit	
  Test(단위 테스트) 코드	
  
Unit	
  Test(단위 테스트) 실행결과	
  
•  OK	
  
– 테스트 성공!	
  
•  FAILED	
  
– Failures	
  
•  예상한 값이 나오지 않아 테스트가 실패.	
  	
  
– Errors	
  
•  테스트를 하다 에러발생	
  
Unit	
  Test(단위 테스트)	
  실행결과	
  
OK	
  
Failures	
  
Unit	
  Test(단위 테스트) 실행결과	
  
Errors	
  
Flask	
  applica)on	
  test	
  
•  Python에서 기본 제공하는 uniOest	
  module	
  사
용	
  
•  Source	
  code	
  
hOps://github.com/mitsuhiko/flask/blob/
master/examples/flaskr/flaskr_tests.py	
  	
  
•  Example	
  code	
  실행	
  
•  테스트코드처럼 작동되는지 확인	
  
Run	
  Flask	
  applica)on	
  	
  
다른 테스팅 기법	
  
•  Flask	
  API에서 제공되는 Applica)on	
  Object	
  API
와 Test	
  Client	
  API 확인 	
  
–  hOp://flask.pocoo.org/docs/api/#applica)on-­‐object	
  
–  예제)	
  test_request_context()함수를 사용	
  
Flask-­‐Tes)ng	
  
•  hOp://pythonhosted.org/Flask-­‐Tes)ng/	
  	
  
•  Python의 uniOest 모듈에서 부족한 부분을 확장
하여 제공함.	
  
•  설치방법(2가지)	
  
1.  $	
  pip	
  install	
  Flask-­‐Tes)ng	
  
2.  $	
  git	
  clone	
  hOps://github.com/jarus/flask-­‐
tes)ng.git	
  
$	
  cd	
  flask-­‐tes)ng	
  
$	
  python	
  setup.py	
  develop	
  
관련 링크	
  
•  테스트 가능한 소프트웨어 설계와 TDD작성 패턴
(Testable	
  design	
  and	
  TDD)	
  
hOp://www.slideshare.net/doorOs/tdd-­‐testable-­‐
design-­‐and-­‐tdd	
  	
  
•  Flask	
  어플리케이션 테스트하기
hOp://kswa.codingstar.net:14705/html/tes)ng.html	
  	
  
•  Python	
  Unit	
  tes)ng	
  framework
hOp://docs.python.org/2/library/uniOest.html	
  	
  
•  Flask-­‐Tes)ng	
  hOp://pythonhosted.org/Flask-­‐Tes)ng/	
  	
  	
  

[2013.07.16] PythonKorea강남스터디 발표 - flask testing

  • 1.
    Flask  Tes)ng   2013-­‐07-­‐16   성대현(DaeHyun  Sung)  
  • 2.
    시작하기 전에   • Something  that  is  untested  is  broken   •  테스트하지 않은 것은 고장난다.  
  • 3.
    TDD   •  테스트주도개발 Test-­‐Driven  Development   •  프로그램을 작성하기 전에 테스트 먼저 하라   Test  the  program  before  you  write  it   •  잘동작하는 깔끔한 코드   Clean  code  that  works   •  질문è응답è정제è반복   AskèRespondèRefineèRepeat  
  • 4.
    xUnit   •  단위테스트를 하는데 도움을 주는 프레임워크   xUnit 이름   관련언어   홈페이지   JUnit   Java   hOp://www.junit.org/   CUnit   C   hOp://cunit.sourceforge.net/     CppUnit   C++   hOp:/sourceforge.net/projects/cppunit   csUnit   C#   hOp://csunit.org/     Test::Unit   Ruby   hOp://ruby-­‐doc.org/stdlib/libdoc/test/unit/rdoc/ classes/Test/Unit.html     uniOest   Python   hOp://docs.python.org/2/library/uniOest.html    
  • 5.
    Unit  TestCase  수행순서   setUp()   testXXX()   teardown()   테스트 시작   테스트 종료  
  • 6.
  • 7.
  • 8.
    Unit  Test(단위 테스트)실행결과   •  OK   – 테스트 성공!   •  FAILED   – Failures   •  예상한 값이 나오지 않아 테스트가 실패.     – Errors   •  테스트를 하다 에러발생  
  • 9.
    Unit  Test(단위 테스트)  실행결과   OK   Failures  
  • 10.
    Unit  Test(단위 테스트)실행결과   Errors  
  • 11.
    Flask  applica)on  test   •  Python에서 기본 제공하는 uniOest  module  사 용   •  Source  code   hOps://github.com/mitsuhiko/flask/blob/ master/examples/flaskr/flaskr_tests.py     •  Example  code  실행  
  • 12.
    •  테스트코드처럼 작동되는지확인   Run  Flask  applica)on    
  • 13.
    다른 테스팅 기법   •  Flask  API에서 제공되는 Applica)on  Object  API 와 Test  Client  API 확인   –  hOp://flask.pocoo.org/docs/api/#applica)on-­‐object   –  예제)  test_request_context()함수를 사용  
  • 14.
    Flask-­‐Tes)ng   •  hOp://pythonhosted.org/Flask-­‐Tes)ng/     •  Python의 uniOest 모듈에서 부족한 부분을 확장 하여 제공함.   •  설치방법(2가지)   1.  $  pip  install  Flask-­‐Tes)ng   2.  $  git  clone  hOps://github.com/jarus/flask-­‐ tes)ng.git   $  cd  flask-­‐tes)ng   $  python  setup.py  develop  
  • 15.
    관련 링크   • 테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable  design  and  TDD)   hOp://www.slideshare.net/doorOs/tdd-­‐testable-­‐ design-­‐and-­‐tdd     •  Flask  어플리케이션 테스트하기 hOp://kswa.codingstar.net:14705/html/tes)ng.html     •  Python  Unit  tes)ng  framework hOp://docs.python.org/2/library/uniOest.html     •  Flask-­‐Tes)ng  hOp://pythonhosted.org/Flask-­‐Tes)ng/