2012-09-13 5 views
3

저는 이상한 문제가 있습니다.Django 패키지 테스트를 찾을 수 없습니다.

나는 장고 패키지를 만들고 있는데, 몇 가지 테스트 케이스를 제공하고 싶다.

패키지의 이름은 ajax_forms이고 전체 경로는 PYTHONPATH의 일부입니다. 이 디렉토리에는 tests 디렉토리 (테스트 포함) 및 urls.py 파일이 포함 된 tests 디렉토리 (__ init __ .py 파일)가 있습니다.

이제 테스트를 실행하고 싶습니다.

ajax_forms 상위 디렉토리에는 INSTALLED_APPS에 ajax_forms가있는 프로젝트 설정 예제가 있습니다.

하지만 테스트가 실행하자 수없는 것 :

>> ./manage.py test ajax_forms 
Creating test database for alias 'default'... 

---------------------------------------------------------------------- 
Ran 0 tests in 0.000s 

OK 
Destroying test database for alias 'default'... 

없음 테스트는 발견되지 그래서 더 구체적으로하려고 :

>> ./manage.py test ajax_forms.tests 
.... 
raise ValueError("Test label '%s' does not refer to a test" % label) 
ValueError: Test label 'ajax_forms.tests' does not refer to a test 
(ajax-validation) 

에도 ./manage.py ajax_forms합니다. tests.tests.AjaxFormViewTest는 테스트를 찾지 못하며 위와 같은 오류가 발생합니다.

그러나 ./manage.py 쉘에서 테스트 케이스를 가져 오려고 내가 무슨 일이 일어나고 있는지에, 여기 좀 우둔 해요

In [2]: from ajax_forms.tests.tests import AjaxFormViewTest 

잘 작동합니다.

+0

테스트 패키지에있는 파일은 실제로''init.py' **라고 불리우나요? '__init __. py' 대신에? –

+0

죄송합니다. init.py 대신 _____init_____.py 했어야합니다. 그래서 거기에는 아무런 문제가 없습니다. –

+0

다시 해냈습니다 :) 코드 스 니펫이나 파일 이름을 마크 업하기 위해 백틱 (\'\')을 사용하면 맹 글링되지 않습니다 –

답변

5

당신은 테스트라는 패키지/모듈의 앱에서 볼 것이다 __init__.py 파일

장고에 from tests import *을 넣어, 다음 테스트 케이스에 대한 네임 스페이스를 심문 할 필요가있다. 이 경우 테스트 패키지의 네임 스페이스 (init .py 파일)를보고 아무 것도 발견하지 못합니다. __init__.py 파일에서 가져 오기를 수행하면 테스트 모듈의 테스트 사례를 테스트 패키지의 네임 스페이스로 가져오고 django는 테스트 모듈을 찾아서 실행할 수 있습니다.

+0

물론 테스트 디렉토리 내에 하나의 파일 만 있다면 요점은 없습니다 test.py 파일을 위의 레벨로 옮기십시오. –

2

이 문제에 대한 또 다른 해결책은보다 지능적인 테스트 러너를 사용하는 것입니다. nosedjango_nose을 시도해 볼 수 있습니다.이 경우 테스트를 발견하게됩니다. 임시 앱을 설치하지 않으려면 @Ctrlspc 솔루션 만이이 문제를 해결할 수 있습니다.

+1

방금 ​​장고 - 코를 사용하기 시작했고이 접근법을 권장 할 수도 있습니다. 나는 수렴과 다른 코 케이크를 쉽게 얻을 수 있지만 장고로 구워지는 것을 좋아합니다! – Ctrlspc

0

models.py 파일을 앱에 추가하고, 설치된 앱에 새 앱을 추가하면 django가 __init__.py에 아무 것도 추가하지 않고 tests.py 파일을 찾을 수 있습니다.

@Ctrlspc 접근 방식과이 중 하나가 더러운 것 같습니다. 그래서 어떤 선택이 좋을까

관련 문제