jadehan

django test 도중 static파일이 호출되지 않는 문제 본문

카테고리 없음

django test 도중 static파일이 호출되지 않는 문제

PaPhoPu 2016. 8. 12. 22:35

Django function test 에서 static file호출이 되지않는 문제

생전 해본적도 없는 test code를 짜면서 개발을 하려니 이래저래 고생입니다.

이번엔 기존에 존재하는 js기능을 테스트하려다 생소한 에러에 직면했습니다.

python manage.py test functional_test
Traceback (most recent call last):
  File "/Users/hanminsoo/.pyenv/versions/3.5.1/lib/python3.5/wsgiref/handlers.py", line 137, in run
    self.result = application(self.environ, self.start_response)
  File "/Users/hanminsoo/.pyenv/versions/study_alone/lib/python3.5/site-packages/django/test/testcases.py", line 1198, in __call__
    return super(FSFilesHandler, self).__call__(environ, start_response)
  File "/Users/hanminsoo/.pyenv/versions/study_alone/lib/python3.5/site-packages/django/core/handlers/wsgi.py", line 177, in __call__
    response = self.get_response(request)
  File "/Users/hanminsoo/.pyenv/versions/study_alone/lib/python3.5/site-packages/django/test/testcases.py", line 1181, in get_response
    return self.serve(request)
  File "/Users/hanminsoo/.pyenv/versions/study_alone/lib/python3.5/site-packages/django/test/testcases.py", line 1193, in serve
    return serve(request, final_rel_path, document_root=self.get_base_dir())
  File "/Users/hanminsoo/.pyenv/versions/study_alone/lib/python3.5/site-packages/django/views/static.py", line 54, in serve
    fullpath = os.path.join(document_root, newpath)
  File "/Users/hanminsoo/.pyenv/versions/3.5.1/lib/python3.5/posixpath.py", line 89, in join
    genericpath._check_arg_types('join', a, *p)
  File "/Users/hanminsoo/.pyenv/versions/3.5.1/lib/python3.5/genericpath.py", line 143, in _check_arg_types
    (funcname, s.__class__.__name__)) from None
TypeError: join() argument must be str or bytes, not 'NoneType'

에러로그를 몇 번이고 확인해보아도 도저히 뭐가 문제인지 모르겠고 건드리지도 않은 부분에서 Traceback이 일어나니 골머리를 앓고 있던 도중 한가지 단서를 잡게됩니다.

바로 제가 테스트를 위해서 사용하고 있던 LiveServerTestCase가 문제였습니다.
기존에 localhost:8000을 돌리기 위해 사용되던 runserver는 스스로 /static/레포지토리를 탐색하여 적용해야할 static파일들을 찾습니다. 

 하지만 LiveServerTestCase는 그런 기능은 탑제되어있지 않는게 문제였습니다.
이 문제를 해결하기 위해 LiveServerTestCase를 지우고 StaticLiveServerTestCase를 대신 상속받도록 해주면 됩니다.

그 후 테스트를 돌려주면 정상적으로 테스트가 통과하는 것을 확인할 수 있습니다.

0 Comments
댓글쓰기 폼