Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在PostgreSQL上运行Django单元测试_Python_Django_Postgresql - Fatal编程技术网

Python 在PostgreSQL上运行Django单元测试

Python 在PostgreSQL上运行Django单元测试,python,django,postgresql,Python,Django,Postgresql,我正在尝试将Django单元测试套件转换为使用PostgreSQL作为其后端。更改Django测试设置最终是微不足道的,但是现在当测试加载装置时,我得到了很多细微的错误。经过几个小时的修补,我发现问题是因为Django没有重置表上的id计数器,所以即使在测试之间从每个表中删除所有行,所有新的装置都不会使用装置中的id,而是使用一个id,即1加上上次测试中使用的最大id 非常令人沮丧。因此,我仔细研究了代码,看看为什么会发生这种情况,如果这是我使用Django 2.2时的一个错误,我发现Djang

我正在尝试将Django单元测试套件转换为使用PostgreSQL作为其后端。更改Django测试设置最终是微不足道的,但是现在当测试加载装置时,我得到了很多细微的错误。经过几个小时的修补,我发现问题是因为Django没有重置表上的id计数器,所以即使在测试之间从每个表中删除所有行,所有新的装置都不会使用装置中的id,而是使用一个id,即1加上上次测试中使用的最大id

非常令人沮丧。因此,我仔细研究了代码,看看为什么会发生这种情况,如果这是我使用Django 2.2时的一个错误,我发现
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未能重置表计数器,并破坏了我的单元测试。为什么不能在标准测试用例中重置表序列?

这可能有帮助:这可能有帮助: