Django UnitTest具有多个数据库

时间:2016-06-07 23:50:46

标签: django

我有一个Django项目,它有2个数据库连接,一个是普通的默认连接,另一个是传统数据库。

其中一个应用程序有这样的迁移:

def remove_dash_from_uuids(apps, schema_editor):
    Job = apps.get_model('task_manager', 'Job')

    for job in Job.objects.all():   
        job.uuid = str(job.uuid).replace('-', '')
        job.save()             


class Migration(migrations.Migration):
    dependencies = [
        ('task_manager', '0003_default_enviroment'),
    ]

    operations = [
        migrations.RunPython(remove_dash_from_uuids),
        migrations.RemoveField(
            model_name='job',
            name='next_runs_hash',          
        ),
    ]

因此,这会运行一些自定义代码,然后删除next_runs_hash字段。

当我运行单元测试时,它创建了2个测试数据库,一个用于“默认”,一个用于“遗留”,迁移成功应用于“默认”但在“遗留”上失败,说next_runs_hash列不存在。

我已验证next_runs_hash数据库中确实存在test_legacy列。

这表明迁移中的remove_dash_from_uuids是在default连接上运行的,该连接应该是legacy连接的粘性。

所以这是我的问题:

  1. 如何在单元测试迁移期间使remove_dash_from_uuids功能坚持连接。
  2. 有没有办法避免为legacy连接创建测试数据库?

0 个答案:

没有答案