Python 在PostgreSQL上运行Django单元测试
我正在尝试将Django单元测试套件转换为使用PostgreSQL作为其后端。更改Django测试设置最终是微不足道的,但是现在当测试加载装置时,我得到了很多细微的错误。经过几个小时的修补,我发现问题是因为Django没有重置表上的id计数器,所以即使在测试之间从每个表中删除所有行,所有新的装置都不会使用装置中的id,而是使用一个id,即1加上上次测试中使用的最大id 非常令人沮丧。因此,我仔细研究了代码,看看为什么会发生这种情况,如果这是我使用Django 2.2时的一个错误,我发现Python 在PostgreSQL上运行Django单元测试,python,django,postgresql,Python,Django,Postgresql,我正在尝试将Django单元测试套件转换为使用PostgreSQL作为其后端。更改Django测试设置最终是微不足道的,但是现在当测试加载装置时,我得到了很多细微的错误。经过几个小时的修补,我发现问题是因为Django没有重置表上的id计数器,所以即使在测试之间从每个表中删除所有行,所有新的装置都不会使用装置中的id,而是使用一个id,即1加上上次测试中使用的最大id 非常令人沮丧。因此,我仔细研究了代码,看看为什么会发生这种情况,如果这是我使用Django 2.2时的一个错误,我发现Djang
Django.test.TransactionTestCase
甚至有一个漂亮的\u reset\u sequences()
方法可以在测试之间重置所有表序列
但是,我使用的是标准的django.test.TestCase
,出于某种原因,在\u fixture\u setup()
方法中,它显式禁用\u reset\u sequences()
并断言错误:
AssertionError: reset_sequences cannot be used on TestCase instances
如果你试着叫它。为什么会这样
实际上,Django未能重置表计数器,并破坏了我的单元测试。为什么不能在标准测试用例中重置表序列?这可能有帮助:这可能有帮助: