첫 단계 : Django가 제대로 설치되었는지 확인
실행하면 어떻게 될까?
$ python3 functional_test.py
Traceback (most recent call last):
File "functional_test.py", line 1, in <module>
from selenium import webdriver
ModuleNotFoundError: No module named 'selenium'
예상대로 안된다. 이제 이걸 되게 해야한다. selenium 파이썬 패키지가 안 깔려 있었다. 그래서 pip 로 추가했다.
pip install selenium
다시 실행하면 다음과 같은 에러가 뜬다
$ python3 functional_test.py
Traceback (most recent call last):
File "functional_test.py", line 3, in <module>
browser = webdriver.Firefox()
File "/Users/pilhwankim/.pyenv/versions/tdd-with-python-env/lib/python3.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 164, in __init__
self.service.start()
File "/Users/pilhwankim/.pyenv/versions/tdd-with-python-env/lib/python3.7/site-packages/selenium/webdriver/common/service.py", line 83, in start
os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
두 가지 실행 되지 않는 문제를 예상해 볼 수 있는데
나는 파이어 폭스를 쓰긴(설치하긴) 싫으므로 예제를 변경했다.
검색을 통해 드라이버를 인스톨하고 실행하는 법을 찾았다.
크롬은 실행이 잘 되었다. 다만 장고 웹서버가 띄워지지 않아서 웹 화면은 띄워지지 않았다.
$ python3 functional_test.py
Traceback (most recent call last):
File "functional_test.py", line 6, in <module>
assert 'Django' in browser.title
AssertionError
이제 Django 웹 서비스를 실제로 띄워 볼 차레이다. 이런 문제를 해결하는 과정 자체가 TDD라고 생각한다.
$ django-admin startproject superlists
# 장고 프로젝트가 생성된다.
$ cd superlists
# 장고 서버 실행 명령
$ python manage.py runserver
atching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
November 26, 2019 - 22:20:42
Django version 2.2.7, using settings 'superlists.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
새로운 shell 을 실행시켜서 이전의 테스트 코드를 다시 돌려보자.
python functional_test.py
사실 직접 크롬을 띄우고 localhost:8000 을 입력한 것을 자동화 한 것 밖에는 없지만 저자가 이 장을 이렇게 장황하게 만든건 의미가 있다고 본다.
아무튼 첫번째 장을 마쳤다. 어떤 고급진 스킬이 있는 장은 아니지만 이 책의 저자에게는 바둑의 포석과 같은 1장이 아니었나 생각한다.