2017-02-28 5 views
1

Ich habe einen einfachen Test ausprobiert und bekam diese Fehlermeldung in der Konsole:(django-Test) assertIs Fehler

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' 

Wir können in der letzten Zeile sehen, kehrte cm.get('hi/du',0)'hi'. Aber warum ist der Test fehlgeschlagen?


Zuerst habe ich thaught es könnte ein Fehler sein, aber weder, dass die Code-Zeile:

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

noch dieses:

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

noch dieses:

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

fehlgeschlagen.


Zum besseren Verständnis füge ich den Code von cm.get(mypattern,number):

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

Dies ist der Code des Tests ist es, die fehlgeschlagen:

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') 

Es sieht aus wie es war einige Probleme mit der split() Funktion, aber zumindest cm.get('hi/du',0) zurück ned 'hi', wie wir das im Stack oben verfolgen können.

für das Erinnern füge ich die entsprechenden Zeilen:

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

Kleines Detail (ich weiß nicht, ob das ist wichtig): Ich habe den Test mit python3 manage.py test lib/navbar gestartet.


Sie wissen also, warum das fehlgeschlagen ist? Oder hast du wenigstens ein paar Vermutungen? Vielen Dank für das Lesen!

+0

können Sie einige weitere Informationen geben auf Was ist 'context.ContextManager'? Und warum müssen Sie assertIs verwenden? Im Grunde behauptet es, ob die Objekte gleich sind oder nicht. Ich denke, Sie können AsserEqual verwenden, wenn Sie nur Werte vergleichen möchten. –

+0

Tank Sie! Das war die Information, die ich brauchte. Schreiben Sie es als Antwort und ich werde es als gelöst markieren. Das war der Fehler. Manchmal ist es zumindest einfacher als es scheint ;-) – Asqiir

Antwort

2

Die Assertion-Methode, die Sie benötigen, ist assertEqual nicht assertIs.

assertEqual(a, b): Vergleicht die Werte von a und b

assertIs(a, b): Überprüft, ob a und b auf die gleiche Objekt, also id sowohl a und b die gleiche ist