为什么我的Django测试在应该失败的时候却通过了



我对任何类型的编码测试都是新手。这是对我问题的回答的后续。答案确定了这种类型的模型方法不应该将对象保存到数据库:

@classmethod
def create(cls, user, name):
list = cls(user=user, name=name) 
return list

如果是这样的话,我很好奇为什么这个测试通过了,并说一切都好?

from django.test import TestCase
from .models import List
from django.contrib.auth.models import User
class ListTestCase(TestCase):
def setUp(self):
user_1 = User(username="test_user", password="abcd")
user_1.save()
List.objects.create(user=user_1, name="mylist")
List.objects.create(user=user_1, name="anotherlist")

def test_lists_is_created(self):
user_1 = User.objects.get(username="test_user")
list_1 = List.objects.get(user=user_1, name="mylist")
self.assertEqual("mylist", list_1.name)

测试通过的原因是您调用了与已实现的方法不同的方法。

ListTestCase.setUp()中的线路

List.objects.create(user=user_1, name="mylist")

实际上,调用Django的QuerySet.create()方法。请注意,它是通过List.objects.create()调用的,而不是通过List.create()调用的。因此,对象被保存在数据库中,并且测试通过。

在您的案例中,您已经在List模型中实现了一个方法create(),因此您应该调用List.create()

相关内容

最新更新