2017-02-28 6 views
1

나는 간단한 테스트를 시도하고 콘솔에서이 오류 메시지가 가지고있다 :(장고 테스트) assertIs 오류

AIL: test_get (navbar.test.ContextManagerTest) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/media/me/049C11249C1111B2/backup me/Freizeit/Django Projekte/mysitetest/lib/navbar/test.py", line 16, in test_get 
    self.assertIs(cm.get('hi/du',0), 'hi') 
AssertionError: 'hi' is not 'hi' 

우리는 마지막 줄에서 볼 수, cm.get('hi/du',0)'hi'를 반환했습니다. 그러나 왜 시험은 실패 했는가?

self.assertIs('hi','hi') 

도 이것 :

self.assertIs(['hi'][0],'hi') 

도이 하나

self.assertIs(cm.get('hi',0),'hi') 


는 첫째, 그 코드 라인에 오류가있을 수 thaught 없지만, 어느 쪽도

이 (가) 실패했습니다.


는 더 나은 이해를 위해, 나는 cm.get(mypattern,number)의 코드를 추가 :

def get(self, mypattern, number): 
    parts = mypattern.split('/').strip() 
    return parts[number] 

이 실패 시험의 코드입니다 :

def test_get(self): 
     cm = context.ContextManager([]) 

     self.assertIs(cm.get('hi',0), 'hi') 
     self.assertIs(cm.get('hi/du',0), 'hi') #this line failed 
     self.assertIs(cm.get('hi/du',1), 'du') 

있었다처럼 보이는 split() 기능에 문제가 있지만 적어도, cm.get('hi/du',0) retur ns 'hi', 위의 stacktrace에서 확인할 수 있습니다. 기억에 대한

나는 관련 행을 추가

self.assertIs(cm.get('hi/du',0), 'hi') 
    AssertionError: 'hi' is not 'hi' 

작은 세부 사항 (I이 중요 여부를 알 수 없음) : 나는 python3 manage.py test lib/navbar와 테스트를 시작했다.


왜 실패했는지 알 수 있습니까? 아니면 적어도 추측이 있습니까? 이것을 읽어 주셔서 감사합니다.

+0

당신이 몇 가지 더 많은 정보를 제공 할 수 있는지 여부를 확인합니다 :는 A, b 값

assertIs(a, b) 비교 'context.ContextManager'는 무엇입니까? 왜 assertIs를 사용해야합니까? 기본적으로 객체가 같은지 아닌지를 나타냅니다. 당신이 값을 비교하기 원한다면 AsserEqual을 사용할 수 있다고 생각합니다. –

+0

탱크 있습니다! 그게 내가 필요한 정보 였어. 답으로 써라. 나는 그것을 해결 된 것으로 표시 할 것이다. 그것은 실수였습니다. 때로는 그것이 보이는 것보다 적어도 더 쉽습니다 ;-) – Asqiir

답변

2

필요한 어설 션 방법은 assertEqual이 아니고 assertIs입니다.

assertEqual(a, b) 는 : 같은 객체, 즉 A와 B 모두의 ID가되는 A와 B 지점은 같은