2012-10-25 44 views
0

我有一個函數:的Django的assertEquals()試驗失敗,即使答案是等於

from django.contrib.gis.measure import Distance, D 

def RunLengthCalc(mod_ewdim, mod_ewspacing, cols): 
    y = D(inch=mod_ewspacing) # user input 
    x = D(inch=mod_ewdim) # user input 
    z = D(inch=3) # constant 
    lrun = ((x * cols) + (y * (cols - 1))) + zrun 
    return lrun 

和我的測試:

def test_run_length_calculation(self): 
    l = RunLengthCalc(26.5, 1, 25) 
    self.assertEquals(l, D(inch=689.5)) 

但是當我運行測試,我得到這個非常令人困惑的錯誤:

AssertionError: Distance(inch=689.5) != Distance(inch=689.5) 

我無法弄清楚問題在這裏。

任何幫助將不勝感激。

回答

1

似乎有一些有趣的業務,如何遠程類的平等實際上是實現:

https://github.com/django/django/blob/master/django/contrib/gis/measure.py#L87

讀取代碼,它看起來像你有什麼應該工作...但顯然它不」噸。

我懷疑你可以通過比較像這樣具體單位值,解決您的問題:

self.assertEquals(l.inch, D(inch=689.5).inch)

+0

嘿。雖然我不得不添加'round()'來約束等號:'self.assertEquals(round(lrun.inch,0),round(D(inch = 691).inch,0))' –