首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django reset_sequences在LiveServerTestCase中不工作

Django reset_sequences在LiveServerTestCase中不工作
EN

Stack Overflow用户
提问于 2015-07-24 11:48:38
回答 1查看 643关注 0票数 5

我将django从1.6更新到1.8.3。我在单元测试中的测试setUp方法中创建测试模型,类似于

代码语言:javascript
复制
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之后出现了问题。

我应该手动重置序列吗?

附注:我知道固定装置,但我的模型更复杂,对我来说,在代码中创建模型更容易。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-07 10:38:21

问题出在sqlite3。测试已与其他设置文件一起运行,其中sqlite3被配置为数据库。

django检查数据库是否支持序列:

代码语言:javascript
复制
# 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,现在它正常工作了

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31609818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档