断言失败与同一个对象

时间:2017-03-14 14:04:26

标签: python django unit-testing

单元测试失败,但有以下异常:

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 个答案:

答案 0 :(得分:2)

由于您的实例未保存,form.save返回的模型实例commit=False和原始未保存对象永远不会相等(除非您将模型的__eq__方法覆盖为处理这个):

来自docs

  

定义相等方法使得具有相同的实例   主键值和相同的具体类被认为是相等的,   除了主键值为None实例不等于除自身以外的任何内容