最近インターフェースのテスト、インタフェースオブジェクトインスタンス工場少年を生成するために、辞書にそのオブジェクトをやって、最後にリクエスト要求を介して送信されます。
辞書にオブジェクト、現在のアプローチは、オブジェクト.__ dict__に知られています。この方法は、非常に簡単(ここでは、属性値はSTRとINTであることを意味します)通常のオブジェクトに使用される複雑なオブジェクト(他のオブジェクトのインスタンスの属性値)の場合には適用されません。
インターネット上で見つかりません該当コード、我々は唯一の不格好自分自身を書くことができ、現在の属性値が対応している場合のSTR、INT、オブジェクトとのリストであります
1つの デフobjecttodict(OBJ): 2 dict_o = OBJ。__dict__ 3 のためのキー、値でdict_o.items(): 4 プリント(キー、タイプ(値)) 5 場合でisinstance(値、(STR、INT)): #不处理STR、INT的情况 6 パス 7 ELIFのでisinstance(値、リスト):#1 处理リスト的情况 8 VALUELIST = [] 9 のために L における値: 10 場合でisinstance(L、(STR、INT)): 11 valuelist.append(L) 12 他: 13である valuelist.append(objecttodict(L)) 14 dict_o [キー] = VALUELIST 15 のelif でisinstance(値、辞書): 16 パス#は、辞書のケースを処理しません 。17 他:#一般的なオブジェクト処理 18は、 [キー] = dict_o objecttodict (値) 19 リターン dict_o
そのような以下の構造をオブジェクトとして、上記方法の辞書によってに変換することができます。
工場-少年は、次の試験に用いた例であります
1つの インポートfactory.fuzzy 2 から demo_factory_boy.fbobject.userのインポートユーザ 3 から demo_factory_boy.fbobject.schoolのインポート学校 4 から demo_factory_boy.fbobject.home インポートホーム 5 から demo_factory_boy.fbprivader.numpv インポートNumProvider 6 7 factory.Faker.add_provider(NumProvider ) #添加自定义的NumProvider 8 9 クラスHomeFactory(factory.Factory): 10 クラスのメタ: 11 モデル=ホーム 12の 13 アドレス= factory.sequence(ラムダ N:' アドレス%04D '%のN)#1 factory.sequence 14 名= " HHH "、2 ] 15 16 クラスSchoolFactory(factory.Factory): 17 クラスのメタ: 18 モデル= 学校 19 20 schoolName = factory.sequence(ラムダ N:' 学校%04D '%のN)#1 factory.sequence 21 ホーム= factory.List(factory.build_batch(HomeFactory、4 )) 22 23 24 クラスUserFactory(factory.Factory): 25 クラスのメタ: 26 モデル= ユーザー 27 28 名= factory.Faker(" 名前"、ロケール= " がzh_CN ")#factory.Faker 29 NUM = factory.Faker(" NUM " ) 30 #の年齢= factory.fuzzy.FuzzyInteger(42)#factory.fuzzy.FuzzyInteger 31 歳= factory.Faker(" random_int"分= 18、最大= 30、ステップ= 1 ) 32 都市= factory.Faker(" アドレス"ロケール= " zh_CNに" ) 33 電話= factory.fuzzy.FuzzyText(" 138 "7、 " 1 」、" 1234567890 ")#factory.fuzzy.FuzzyText 34 学校= factory.SubFactory(SchoolFactory) #factory.SubFactory 35 36 #インフォメーション= factory.List([SchoolFactory]) 37 情報= factory.List(factory.build_batch(SchoolFactory、4)) 41の 42 クラスのparams: 43 出荷= factory.Trait( 44 名= なし 45 )