Как можно проверить миграцию данных? - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть следующее data migration

from django.db import migrations, models


def gen_str(apps, schema_editor):
    Donation = apps.get_model('donation', 'Donation')
    Donation.objects.filter(payment_method_id__isnull=True).update(payment_method_id='')


class Migration(migrations.Migration):

    dependencies = [
        ('donation', '0006_auto_20200129_0942'),
    ]

    operations = [
        migrations.RunPython(gen_str, reverse_code=migrations.RunPython.noop),
        migrations.AddField(
            model_name='donation',
            name='payment_intent_id',
            field=models.CharField(blank=True, default='', max_length=256),
        ),

Как проверить функцию gen_str?

Я пробовал это:

class DataMigrationTests(TestCase):
    def test_gen_str(self):
        migrations.AlterField(
            model_name='donation',
            name='payment_intent_id',
            field=models.CharField(blank=True, null=True, default='', max_length=256),
        )
        DonationFactory.create_batch(7, payment_method_id=None)
        data_migration.gen_str(apps, connection.schema_editor())
        payment_ids = Donation.objects.values_list('payment_method_id', flat=True)
        print(payment_ids)
        self.assertTrue(payment_ids, '')

Но получил ошибку django.db.utils.IntegrityError: Null value in column "payment_method_id" на линии DonationFactory.create_batch(7, payment_method_id=None)

...