データは、単一の、比較的単純である場合は、テストプロセスは、必然的に、テストデータを作成する必要がありますが、それは大量のデータ、多くの問題である場合。
最近SQLAlchemyModelFactory SQLAlchemyのモデルによってクラスをサポートしています。このPythonのサードパーティのライブラリFactory_boy見て、単に非常に使いやすい感じ、ビットを試してみてください。
依存性:
工場出荷時に少年== 2.12 0.0 SQLAlchemyのの == 1.3.7 mysqlの -connector-のpython == 8.0.17
ユーザテーブル(MySQLの):
1 CREATE TABLE ` ユーザー(` 2 `id` INT(11)NOT NULL 、 3 ` NAME`のVARCHAR(20)DEFAULTの NULL 、 4 PRIMARY KEY ( `id`) 5)ENGINE =のInnoDB DEFAULTの CHARSET = UTF8コメント= ' 用户表" ;
boytest.py
1 から SQLAlchemyのをインポート列、文字列、整数、ユニコード、create_engine 2 から sqlalchemy.ext.declarative インポートdeclarative_base 3 から sqlalchemy.ormのインポートscoped_session、sessionmaker 4 5ベース= declarative_base() 6 7 クラスのユーザ(塩基): 8 #表的名字: 9 __tablename__ = ' ユーザ' 10 11 #表的结构: 12 、ID =列(文字列(20)、PRIMARY_KEY = TRUE) 13 名前=列(文字列(20 )) 14 15エンジン= create_engine(' のMySQL + mysqlconnector://オートテスト:[email protected]:3306 / TESTDB ' ) 16 DBSession = scoped_session(sessionmaker(バインド=エンジン)) #这里需要使用scoped_session 17 18 #Base.metadata.create_all(エンジン)#创建表 19 20 輸入工場 21 22 クラスUserFactory(factory.alchemy.SQLAlchemyModelFactory): 23 クラスのメタ: 24 モデル= ユーザー 25 sqlalchemy_session = DBSession #SQLAlchemyのセッションオブジェクト 26 sqlalchemy_session_persistence = " コミット" #を"コミット" - (コミットセッションを実行する)# 'フラッシュ' - )(セッション・フラッシュを行う 27 28 ID = factory.Sequence(ラムダN:N) 29 #のID = 9 30 名= factory.Sequence(ラムダ N:U ' ユーザー%D '%のN) 31 32 #清除表内容 33 DBSession.query(ユーザー).delete() 34 #DBSession.query(ユーザ).filter(ユーザ.ID == 0).delete() 35 DBSession.commit() 36 37 [ 38は、 #1 ユーザー= DBSession.query(ユーザー).ALL() 39 #ユーザーがusr用: 40 # プリント(USR .__ dict__にマジック) 41は 42である #はレコードを作成し 43である UserFactory() 44れる #1 UserFactory() 45 #100を作成します記録 46は、 factory.build_batch(UserFactory、100 ) 47 #DBSession.commit() 48人のユーザー= DBSession.query(ユーザー).ALL() 49 のために USR 中のユーザー: 50 印刷(。usrの__dict__ ) 51であります プリント(LEN(ユーザ)) 52 DBSession.remove()
結果:
レコードを達成するために、ライン100内に挿入されるfactory.build_batch(UserFactory、100)は、非常に便利です。
参考文献:
https://www.cnblogs.com/wangtaobiu/p/11007547.html
https://blog.csdn.net/zhyh1435589631/article/details/51549944
https://www.liaoxuefeng.com/wiki/897692888725344 / 955,081,460,091,040
https://factoryboy.readthedocs.io/en/latest/orms.html#sqlalchemy