Django:断言 'Many-to-many' 关系存在于测试中
Django: assert 'Many-to-many' relation exists in test
我正在为我的项目编写测试,但在尝试验证 'ManyToMany' 关系是否存在时,我 运行 遇到了问题。
测试涉及以下两个模型,它们与 ManyToMany
链接在一起
型号:
class Project(models.Model):
(...)
linked_attributes = models.ManyToManyField(attributes, blank=True)
class Attributes(models.Model):
(...)
class linked_projects = models.ManyToManyField(Project, blank=True)
在我的测试中,我想验证表单是否创建了新的多对多关系。我根据一些示例代码在最后一行创建了断言,但它似乎不起作用。
测试:
class ProjectTest(TestCase):
(...)
form_data = {'linked_attributes' : self.attribute}
form = ProjectForm(data=form_data, project=self.project, instance=self.project)
self.assertTrue(Project.attributes_set.filter(pk=self.Project.pk).exists())
有人知道我做错了什么吗?
您的模型结构有误。您应该只在关系的 one 端定义多对多;另一端通过反向关系访问。
另外,你的说法是错误的。您需要通过项目实例查询链接属性,而不是整个项目 class。
最后,在该断言之前您是否真的有一些代码来验证和保存表单?否则什么都不会改变。
所以:
self.assertTrue(form.is_valid())
saved_project = form.save()
self.assertTrue(saved_project.attributes_set.exists())
我正在为我的项目编写测试,但在尝试验证 'ManyToMany' 关系是否存在时,我 运行 遇到了问题。
测试涉及以下两个模型,它们与 ManyToMany
链接在一起型号:
class Project(models.Model):
(...)
linked_attributes = models.ManyToManyField(attributes, blank=True)
class Attributes(models.Model):
(...)
class linked_projects = models.ManyToManyField(Project, blank=True)
在我的测试中,我想验证表单是否创建了新的多对多关系。我根据一些示例代码在最后一行创建了断言,但它似乎不起作用。
测试:
class ProjectTest(TestCase):
(...)
form_data = {'linked_attributes' : self.attribute}
form = ProjectForm(data=form_data, project=self.project, instance=self.project)
self.assertTrue(Project.attributes_set.filter(pk=self.Project.pk).exists())
有人知道我做错了什么吗?
您的模型结构有误。您应该只在关系的 one 端定义多对多;另一端通过反向关系访问。
另外,你的说法是错误的。您需要通过项目实例查询链接属性,而不是整个项目 class。
最后,在该断言之前您是否真的有一些代码来验证和保存表单?否则什么都不会改变。
所以:
self.assertTrue(form.is_valid())
saved_project = form.save()
self.assertTrue(saved_project.attributes_set.exists())