클린 코드를 위한 테스트 주도 개발 1

2016-09-19

클린 코드를 위한 테스트 주도 개발

    이 책은 Django 1.7기반으로 쓰여진 책이다. 지금의 버전(1.10)에서는 책의 테스트 코드가 제대로 돌아가지 않을 수 있다. 처음에 functional_test.py라는 테스트코드를 돌리는데 첫 테스트 부터 책과는 다른 결과가 나온다. 이건 firefox 브라우저의 버전관련해서 생긴 문제로 책을 처음부터 읽어가면서 문제가 있었던 부분과 해결한 방법에 대해서 설명한다. 여기에서 책 내용을 볼 수 있다.

    실행환경은 아래와 같다.
MacOS 10.11.6, python 3.5.2, firefox 48.0.2, Django 1.10, selenium 2.53.6

    책 5페이지의 functional_test.py를 돌려보면 아래와 같은 결과가 나온다. Django TDD p5: functional_test.py

FF 다운그레이드가 편하긴 하지만 selenium 3점대가 현재 베타 버전으로 나와있고 조만간 정식으로 릴리즈 될 것이므로 FF다운그레이드를 하지않기로 했다. 바뀐 functional_test.py는 아래와 같다.

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

caps = DesiredCapabilities.FIREFOX
caps["marionette"] = True
caps["binary"] = "/Applications/Firefox.app/Contents/MacOS/firefox-bin"

browser = webdriver.Firefox(capabilities=caps)
browser.get('http://localhost:8000')

assert 'Django' in browser.title
  1. geckodriver에서 v.0.9.0을 받아준다. v.0.10.0이 현재 최신버전이긴 하나 selenium 3(베타)를 위한 것이다.
  2. vim ~/.bash_profile로 $PATH 편집하는 파일을 연뒤
    export PATH=$PATH:/0.9.0을/받은/폴더/경로/.../geckodriver-v0.9.0-mac를 한 줄 넣어준다.
  3. 쉘을 재 실행한다.
  4. geckodriver --version을 치면 아래와 같이 나온다. Django TDD: geckodriver --version
  5. python functional_test.py를 돌려보면
    FileNotFoundError: [Errno 2] No such file or directory: 'wires'라고 한다.
  6. mozila의 문서대로라면 많은 selenium client가 예전 이름인 wires를 찾는다고 한다.
  7. 따라서 /0.9.0을/받은/폴더/경로/.../geckodriver-v0.9.0-mac안에 있는 geckodriverwires로 바꿔준다.
  8. wires --version을 통해 4번과 같은 결과를 얻을 수 있다.
  9. 에러메세지는 책에 있는대로 나오진 않지만 FF브라우저가 열리고 localhost:8000에 접속하려고 한다.
  10. 당연히 localhost:8000을 get하는곳에서 문제가 생기기 때문에 원하는대로 assert를 내려면 주소를 바꾸면 된다. browser.get('http://www.google.com') 으로 바꿔주면 아래와 같은 결과가 나온다. Django TDD p5: functional_test.py

참고자료