assertEqual将值转换为None

时间:2016-03-08 03:59:14

标签: python django django-testing

我对此错误感到非常不安。这是一些背景

我有挑战模型

class Challenge(models.Model):
    name = models.CharField(max_length=100)
    description = models.CharField(max_length=2000, blank=True, null=True)
    author = models.ForeignKey(Member, related_name="challenge_author")
    category = models.ForeignKey(ChallengeCategory)
    rank = models.DecimalField(max_digits=4, decimal_places=2, blank=True, null=True)
    validations = models.ManyToManyField(Member,
                                         through=Validation,
                                         related_name="validated_users",
                                         blank=True)
    def update_rank(self):
        ranks = [0 if validation.rank is None else int(validation.rank)
                 for validation
                 in Validation.objects.filter(challenge__pk=self.id,)]
        self.rank = sum(ranks)/len(ranks)
        self.save()

我有一个测试来测试update_rank()

def test_update_rank(self):
    hello_world = Challenge.objects.get(name="HelloWorld")
    hello_world.update_rank()
    print(hello_world.rank == 9.00)
    self.assertEqual(hello_world.rank, 9.00)

当我进行测试时,我得到:

True

Failure
Traceback (most recent call last):
  File "/.../website/tests/test_models.py", line 105, in test_update_validation
    self.assertEqual(hello_world.rank, 9.00)
AssertionError: None != 9

因此,根据hello_world.rank,这意味着9.00 等于print()但由于某些原因,assertEqual认为{{1}是} hello_world.rank

我不知道该怎么想。如果您需要更多信息,请不要犹豫。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

根据追溯,test_update_validation方法失败,而不是您提交的test_update_rank