现在我为我的第一个django应用程序编写测试并且遇到了主键的问题,看起来像测试pk并不是自动递增。
我为测试设置了所有数据,如下所示:
Work(title="Test title").save()
Work(title="Test title").save()
Work(title="Test title").save()
得到这样的行:
work = Work.objects.get(pk=1)
work2 = Work.objects.get(pk=2)
work3 = Work.objects.get(pk=3)
但我试图获得的主键与我预先创建的数据不匹配,如果对于数据我也设置了pk,那么一切正常,我的意思是Work(pk=1, ...)
我只是想知道它为什么会这样,为什么我不能使用自动递增值?
答案 0 :(得分:1)
所以这有点依赖于Django的几个方面。他们使用的默认测试类实际上将在事务中运行每个测试(https://docs.djangoproject.com/en/1.7/topics/testing/tools/#django.test.TestCase)。这会导致主键在类之间继续递增。
还有一种观点认为,依靠类中的PK会导致错误的假设...所以你有一些选择