我有一个涉及各个领域的模型。其中之一是CharField
field = models.CharField(max_length=100, blank=False, null=False)
现在,当我在Django测试类函数'setUpTestData'中创建不带此字段的对象时,它不会给出任何错误。 如果我将minLengthValidator添加到它,那么它也不会给出任何
models.CharField(blank=False, null=False, max_length=100, validators=[MinLengthValidator(1)])
在创建对象后打印它时,它会给出一个空字符串。
我还有另一个字段:
field2 = models.DateTimeField(blank=False, null=False)
现在,如果我在创建对象时不提供此数据,则测试将正确失败。
class Bag(models.Model):
created_on = models.DateTimeField(default=timezone.now)
order_id = models.CharField(blank=False, null=False, max_length=100)
order_created_time = models.DateTimeField(blank=False, null=False)
class SalesBagTestCase(TestCase):
@classmethod
def setUpTestData(cls):
Bag.objects.create(order_created_time=datetime.now())
def test_bag(self):
bag_response = self.client.get('http://localhost:8000/bag/')
self.assertEqual(bag_response.status_code, 200)
即使我在setUpData方法中删除了order_id字段,AssertEqual也为True
答案 0 :(得分:0)
class Bag(models.Model):
created_on = models.DateTimeField(default=timezone.now)
order_id = models.CharField(blank=False, null=False, max_length=100)
order_created_time = models.DateTimeField(blank=False, null=False)
class SalesBagTestCase(TestCase):
bag = None
@classmethod
def setUpTestData(cls):
bag = Bag.objects.create(order_created_time=datetime.now())
cls.bag = bag
def test_bag(self):
bag_response = self.client.get('http://localhost:8000/bag/')
self.bag.full_clean()
self.assertEqual(bag_response.status_code, 200)
这表明我们需要在预保存信号中使用full_clean()方法。