我已经将
django从1.6更新到1.8.3.我在单元测试中在测试setUp方法中创建测试模型,类似的东西
class MyTestCase(LiveServerTestCase):
reset_sequences = True
def setUp(self):
self.my_model = models.MyModel.objects.create(name='test)
我在应用程序中有代码,它依赖于主键== 1.我注意到,序列实际上并没有被重置.在每次下一次测试中,pk都比以前更高.
这在django 1.6中运行正常,但在迁移到1.8问题后出现.
我应该手动重置序列吗?
附:我知道夹具,但我的模型更复杂,对我来说,在代码中创建模型更容易.
最佳答案 问题出在sqlite3上.测试已与其他设置文件一起运行,其中sqlite3配置为数据库.
如果数据库支持序列,则django检查:
# django.test.testcases.py:809
def _reset_sequences(self, db_name):
conn = connections[db_name]
if conn.features.supports_sequence_reset:
sql_list = conn.ops.sequence_reset_by_name_sql(
no_style(), conn.introspection.sequence_list())
# ....
所以我已经将测试设置切换到postgresql,现在它正常工作