2

私は、保存時に外部サービスでアカウントの作成をトリガーするdjangoモデルを持っています(djangoとはまったく関係ありません)。ただし、テストのために、このアカウントの作成を抑制したいと思います。マネージャーの save() メソッドをオーバーライドしてそこから kwarg をポップするか、非データベース フィールド プロパティをDjango モデルの非データベース フィールドに従ってモデルに追加し、それを save メソッドで確認することができます。

ただし、factoryboy を使用してオブジェクトを作成しようとすると、モデル内の実際のフィールドをチェックしているように見えますが、プロパティがフィールドではないためにクラッシュします。

class MyModel(models.Model):
    name = models.CharField()
    create_external_account = True
    def save(self, *args, **kwargs):
        if create_external_account:
            ...

class MyModelFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = MyModel
    name = factory.Sequence(lambda n: 'name%d' % n)
    create_external_account = False

factoryboy を介してこのような追加のパラメーターを渡す方法について何か考えはありますか?

4

3 に答える 3

1

2.4.0 で追加された除外を使用できます。http://factoryboy.readthedocs.org/en/latest/reference.html#factory.FactoryOptions.exclude を参照してください。

于 2016-01-19T13:31:42.020 に答える