2016-07-19 2 views
0

Django는 테스트 결과를 출력하지 않아야한다고 생각했습니다. 데이터 입력에 도움이되는 몇 가지 print 서술문이 있습니다. TestCase을 쓰지 만, 테스트가 실행되면 모든 출력을 인쇄합니다 귀찮은 터미널에.왜 장고는 출력물을 테스트합니까?

테스트 중에 장고가 인쇄를 중단하는 방법이 있습니까? 왜 이렇게하지 않는거야?

모델 방법 :

def wiktionary_lookup(self, wiktionary_prefix, driver): 

    driver.get("http://%s.wiktionary.org/wiki/%s" % (wiktionary_prefix, self.name)) 
    definitions = driver.find_elements_by_xpath("//h3/following-sibling::ol/li") 

    count = 0 
    defs_list = [] 

    print "\tWIKTIONARY DEFINITIONS:\n" 
    for i in definitions: 
     i = i.text.split('\n') 
     for j in i: 
      #Takes out an annoying "[quotations]" in the end of the string, soemtimes. 
      j = re.sub(u'\u2003\[quotations \u25bc\]', '', j) 
      print "\t%d. %s" % (count, j) 
      defs_list.append(j) 
      count += 1 
    print "\n" 

    return defs_list 

테스트 :

def test_wiktionary_lookup(self): 
    language = Language.objects.create(name='eng', full_name='English') 
    word = Word.objects.create(language=language, name='testword') 
    driver = webdriver.Chrome() 
    output = word.wiktionary_lookup('en', driver) 
    self.assertTrue(len(output) == 0) 
    word = Word.objects.create(language=language, name='table') 
    output = word.wiktionary_lookup('en', driver) 
    self.assertTrue(len(output) > 0) 
+0

코드를 게시하시기 바랍니다 : 여기에

로깅에 장고 문서에 대한 링크입니다. –

+4

그건 정상입니다. 당신은 당신의 코드에서'print' 문을 사용해서는 안됩니다. 유용하다면 로거를 사용할 수 있습니다. –

+0

@ZachZundel 코드 psoted – deltaskelta

답변

2

당신의 wiktionary_lookup 기능은 인쇄를하고있다. 귀하의 테스트 케이스가 귀하의 wiktionary_lookup 코드의 기능을 변경하지 않을 것입니다 - 실제로 그렇게했다면 아주 좋은 테스트 케이스가 아닐 것입니다! (실제 코드가 아닌 변경된 코드를 테스트 할 것입니다.) 인쇄하기를 원하지 않는다면, François가 언급 한 것처럼 로거 등을 사용할 수 있습니다. https://docs.djangoproject.com/en/1.9/topics/logging/