2017-03-14 59 views
0

單元測試失敗,出現以下異常:斷言失敗與同一對象

def test_question_form(self): 
    question = Question(question_text='Dummy question', pub_date=timezone.now(
    ) + datetime.timedelta(days=1), allow_multiple_choices=True) 
    question_form = QuestionForm(
     {'question_text': question.question_text, 'pub_date': question.pub_date, 'allow_multiple_choices': 'on' if question.allow_multiple_choices else 'off'}) 
    self.assertTrue(question_form.is_valid()) 
    self.assertEqual(question_form.save(commit=False), question) 

AssertionError: <Question: Dummy question> != <Question: Dummy question>

一些手工斷言對象似乎是相等後,我究竟做錯了什麼?

+1

你可能創建「虛擬問題」的2個實例對象 –

回答

2

由於你的情況下,不保存,(除非您覆蓋模型的__eq__方法來處理這個問題)通過form.savecommit=False和原未保存的對象返回的模型實例永遠不會相等:

docs

的平等方法被定義爲使得具有相同 主鍵值和相同的混凝土類實例被認爲是相等的,除了 用整潔該實例的None進制鍵的值不等於除了自己什麼

+0

將是解決這一什麼,除了重寫等方法嗎?我是否必須手動聲明所有模型成員? – R3turnz

+0

請參閱[比較對象實例的相等在python中的他們的屬性](http://stackoverflow.com/questions/1227121/compare-object-instances-for-equality-by-their-屬性功能於蟒) –