問題タブ [factory-boy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - FactoryBoyを使ってリストサイズを指定する方法
私がこのモデルを持っているとしましょう:
作成時に作成される foo の数を決定できるようにしたいです。
次のような工場を試しました
もちろん、必要な長さの Foo() のリストを手動で作成し、FooContainerModel をインスタンス化することもできますが、それは私が望むものではありません。解決策はありますか?
python - Factory boy ImageFiled を使用すると、属性が見つからない _committed エラーが発生する
を必要とするテスト ケースのデータを設定しようとしていますdjango.db.models.ImageField
。factory.django.ImageField
factory-boy から使用しようとしていますが、エラーが発生しますAttributeError: 'ImageField' object has no attribute '_committed'
単純化された django オブジェクト:
工場クラス:
テストでの使用:
これにより、 を作成する行を指す次のエラーが表示されますGalleryImageFactory
。
私はpython(2.7.6)、factory-boy(2.4.1)、Django(1.6.8)を実行しています
完全なスタック トレース:
指定されたファイル名を使用して有効な画像を取得する他の方法のヒントを含め、助けていただければ幸いです。前もって感謝します!
python - FactoryBoy SubFactory によって生成されたこのオブジェクトを SQLAlchemy が外部キーに変換しないのはなぜですか?
私は、Flask と SQLAlchemy (Flask-SQLAlchemy 拡張機能を介して) をFactory_Boyと共に使用しています。
私のGearItem
モデルには への外部キーがありGearCategory
ます。Factory_BoySubFactory
は、元のファクトリで外部キーとして使用されるオブジェクトを作成する関数を通じてこれを処理します。
ここに私のモデル定義があります:
そして、これが私の factory_boyFactory
定義です。
問題なく呼び出すことができ、外部キーとして使用することを目的とした aと親のGearItemFactory()
両方を明確に生成しています。GearItem
GearCategory
ただし、 を呼び出すと、SQLAlchemy は によって作成されたオブジェクトを、外部キーとして使用できる整数にdb.session.flush()
変換しません。SubFactory
代わりに、オブジェクト自体を基礎となるデータベース ドライバーに渡そうとしますが、データベース ドライバーは、 type のオブジェクトを処理する方法がわからないことを訴えますGearCategory
。
私が得ているエラーはsqlalchemy.exc.ProgrammingError: (db_driver) can't adapt type 'GearCategory' [SQL: 'INSERT INTO gear_item (...
私は何を間違っていますか?
django - py.test で django ユーザーに factoryboy を使用する
Django アプリの UnitTests を py.test に移行していますが、UnitTests では factory-boy を使用して django.contrib.auth.models.User のインスタンスを作成しています。これはpytest-factory-boyでどのように行うことができますか?
python - GeoDjango PointFields で Factory Boy を使用する
私が始めた新しい GeoDjango プロジェクトのテストを書いています。通常、私はFactory BoyとFakerを使用して、テスト用のモデル インスタンスを作成しました。ただし、GeoDjango PointField フィールドをモックする方法は明確ではありません。Spacialiteでレコードを見ると、バイナリ ブロブとして表示されます。
私は GIS にまったく慣れていないので、Django で PointFields のファクトリを作成する方法について少し混乱しています。
django - factory_boy で関連する子レコードの ID を取得する
私はfunction
いくつかのを持っておりparameters
、次にその関数の特殊化を行い、関数のパラメータごとにinstantiation
いくつかを持っています。settings
だから私は次のような構造を持っています:
を作成するために使用FunctionFactory
できます。factory.RelatedFactory
parameters
しかし、内で作成されたオブジェクトにアクセスできないため、 をFunctionInstantiationFactory
使用factory.RelatedFactory(ParameterSetting)
して作成することはできず、 を設定できません。ParameterSettings
parameter
FunctionFactory
parameter_setting.function_parameter_id
で作成されたパラメータをFunctionInstantiationFactory
検索するにはどうすればよいですか? の戻り値からそれらを取得できますか? または、データベースを確認する必要がありますか?parameter_id
FunctionFactory
RelatedFactory(FunctionFactory)
python - SubFactory と LazyAttribute で作成されたオブジェクトを factory_boy の RelatedFactory に渡す
で作成されたオブジェクトを渡すために呼び出しfactory.LazyAttribute
内で使用しています。これはうまくいきます。SubFactory
factory_parent
しかし、作成したオブジェクトを に渡すと、RelatedFactory
がLazyAttribute
表示されなくなりfactory_parent
、失敗します。
これはうまくいきます:
への同一の呼び出しLazyAttribute
はここで失敗します:
同一のLazyAttribute
呼び出しは factory_parent を見ることができなくなり、AnotherObject
値にのみアクセスできます。LazyAttribute は次のエラーをスローします。
これを回避する方法はありますか?
sub_object=sub_object を ObjectFactory 呼び出しに入れることはできません。
私がそうするなら:
2 番目の sub_object が作成されますが、両方のオブジェクトが同じ sub_object を参照する必要があります。私はSelfAttribute
無駄にしようとしました。
python - ~Factory サブクラスで「self」なしで factory_boy スーパー クラス メソッドを呼び出す
サブクラスから親ファクトリのメソッドを呼び出す方法はありますか?
はクラスのインスタンスではなく、ファクトリが返すオブジェクトであるため、通常のsuper(ThisClass, self)
orParentClass.method(self)
メソッドは機能しません。self
エラーはTypeError: super(type, obj): obj must be an instance or subtype of type
です。
(ショートカットsuper().post(create, extracted, kwargs)
は同じエラーを生成します。)
SomethingFactory.post
サブクラスからその親ファクトリ メソッドにアクセスするにはどうすればよいですか?
python - factory_boy ファクトリの多重継承 - 最初の親のみを継承しているようです
2 つの ~Factory factory_boy クラスから継承しようとしていますが、最初のクラスのみが継承されているようで、2 番目のクラスは無視されます。(彼らは共通の親を持っています。)
両方を継承する方法はありますか?
これは困難な注文であることは承知していますが、これにより、私が抱えている問題に対する非常に素晴らしいソリューションが可能になり、必要なテスト ケースのすべての組み合わせを多重継承だけで簡単に作成できるようになります。(factory_boy でサポートするのはおそらく「単純」ではないことを認識しています。)