2014-12-25 5 views
2

어떻게 장고 물건에 의존하지 않는 Python (3.4) 단위 테스트를 작성할 수 있습니까?장고없이 파이썬 단위 테스트

은 처음에는 Pycharm가 인위적 내 unittests에 장고 종속성을 추가 어떻게 든 않았다 생각하지만 난 그냥

python <test containing file> 

를 실행 그리고 난 아직도 이상한 장고 출력 수에 의해 확인 : 여기

Traceback (most recent call last): 
    File "test_pinyinTones2NumbersTransformer.py", line 2, in <module> from PinyinTones2NumbersTransformer import PinyinTones2NumbersTransformer 
    File "/home/xiaolong/PycharmProjects/PinyinTransformer/pinyintransformer/PinyinTones2NumbersTransformer.py", line 1, in <module> from django.contrib.gis.gdal.prototypes.generation import void_output 
ImportError: No module named 'django' 

을 테스트 파일의 소스 코드입니다 :

import unittest 
from PinyinTones2NumbersTransformer import PinyinTones2NumbersTransformer 

class TestPinyinTones2NumbersTransformer(unittest.TestCase): 
    def setUp(self): 
     self.pinyin_tones_2_numbers_transformer = PinyinTones2NumbersTransformer() 

    def test_setText (self): 
     self.fail() 

    def test_transform (self): 
     self.fail() 

    def test_getToneNumberOfTonedSyllable (self): 
     self.assertEquals(self.pinyin_tones_2_numbers_transformer.getToneNumberOfTonedSyllable("ne"), 0) 
     self.assertEquals(self.pinyin_tones_2_numbers_transformer.getToneNumberOfTonedSyllable("ān"), 1) 
     self.assertEquals(self.pinyin_tones_2_numbers_transformer.getToneNumberOfTonedSyllable("péng"), 2) 
     self.assertEquals(self.pinyin_tones_2_numbers_transformer.getToneNumberOfTonedSyllable("nǐ"), 3) 
     self.assertEquals(self.pinyin_tones_2_numbers_transformer.getToneNumberOfTonedSyllable("jiào"), 4) 

내 프로젝트에는 abso가 있습니다. 대장과는 아무런 관련이 없습니다. 내가 전에 장고 튜토리얼을 시도했지만, 내가 지금하고있는 것과 아무 상관이 없다. 또한이 메시지를 본 후 장고를 삭제했습니다. 아마도 파이썬 인터프리터가 장고와 unittest라는 모듈을 혼동하고 있다고 생각했기 때문입니다.하지만 문제를 해결하지는 못했습니다.

내가 발견이 :

http://stackoverflow.com/questions/10345948/django-vs-python2-7-unittest-testcase 

그러나 무엇보다도 먼저 : 나는 파이썬 3.4을 사용하고 내가 내 테스트의 이전 버전과의 호환성을 걱정하지 않는다. 어쨌든 다른 누구도 아마 내 프로그램을 보거나 사용하지 않을 것입니다. 그것은 테스트를 작성하는 데 익숙해지기 위해 일종의 운동입니다.

나는 장고 보너스 슈퍼 메가없이 내 수업의 메소드에 대한 간단한 테스트를 작성하고 싶다. 또한 파이썬 자체의 기본 unittests가 내 작은 프로젝트에 충분하다고 확신한다.

답변

3

단위 테스트는 서브 클래스 unittest.TestCase이므로 Django 항목을 사용하지 않습니다.

PinyinTones2NumbersTransformerdjango.contrib.gis.gdal.prototypes.generation에서 void_output을 가져오고 있습니다. 따라서 PinyinTones2NumbersTransformer을 변경하지 않는 한 테스트를 실행하려면 django이 설치되어 있어야합니다.

+0

지금 나는 아주 어리 석다. Pycharm은 파일에 장고를 가져 오는 생각할 수없는 이유가 있지만 Pycharm에서 같은 파일을 두 번 열 수 있었기 때문에 장고를 가져 오지 않고 버전 만 보았 기 때문에 나는 그것을 볼 수 없었습니다. 그런데 왜 ??? 그것은 장고 가져 오기 삽입 했습니까?! -.- 어쨌든 고마워요, 당신은 수수께끼를 풀었습니다. – Zelphir

관련 문제