Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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
Django 1.3和南迁_Django_Unit Testing_Fixtures_Django South - Fatal编程技术网

Django 1.3和南迁

Django 1.3和南迁,django,unit-testing,fixtures,django-south,Django,Unit Testing,Fixtures,Django South,我有一个现有的项目,它广泛地使用南方迁移将数据加载到表中 由于升级到Django 1.3,我们的单元测试不再运行,因为它们找不到所依赖的数据 这种行为是由于1.3中的原因造成的吗 是否有一种简单的方法可以将所有这些迁移转换为装置 是的,这种行为是由于这种变化 在South trunk中似乎有一个解决方法(请参阅),所以您可以尝试South development版本(根据我的经验,它相当稳定) 您可以尝试在设置中更改数据库名称(以获得干净的环境),运行/manage.py syncdb和/man

我有一个现有的项目,它广泛地使用南方迁移将数据加载到表中

由于升级到Django 1.3,我们的单元测试不再运行,因为它们找不到所依赖的数据

  • 这种行为是由于1.3中的原因造成的吗
  • 是否有一种简单的方法可以将所有这些迁移转换为装置
  • 是的,这种行为是由于这种变化

    在South trunk中似乎有一个解决方法(请参阅),所以您可以尝试South development版本(根据我的经验,它相当稳定)

  • 您可以尝试在设置中更改数据库名称(以获得干净的环境),运行
    /manage.py syncdb
    /manage.py migrate
    ,然后执行
    /manage.py dumpdata


  • 我今天谈到这个问题。最终,我重构了迁移,让它们使用helper函数实际插入数据,然后从测试的setUp()调用相同的函数

    一些提示

    • 让您的助手函数将模型类作为参数,这样您就可以使用迁移中的orm['yourapp.YourModel']和测试中的models.YourModel调用它们。这也显示了主要的局限性:South适用于模式自那时以来发生了变化的模型,测试代码无法做到这一点。我很幸运,这个特殊的型号没有改变

    • 如果要在迁移中保留helper方法,您会发现无法直接导入app.migrations.0001\u某些迁移,因为标识符不能以数字开头。使用类似于
      migration\u 0001=importlib.import\u模块('yourapp.migrations.0001\u some\u migration')
      的语句,而不是import语句


    您可以尝试删除每个应用程序目录中的
    迁移
    文件夹,然后运行
    /manage.py schemamigration-app--initial
    ?首先对所有内容进行备份,因为这可能有效,也可能无效。这对我的单元测试有效,但会破坏我的生产系统!截至2012年1月19日,还没有一个南方版本提供该修复程序,但您可以使用:
    pip install hg从主干安装南方+https://bitbucket.org/andrewgodwin/south
    但是-据我所知,它并不能解决问题。。。