Factory Boy弃用了set_creation_function方法(详见ChangeLog 2.6.1),建议开发人员将factory.set_creation_function(SomeFactory, creation_function)替换为重写SomeFactory类的_create()方法。
我有i)许多派生工厂类和ii)我的db会话在另一个模块中实例化,因此我尝试使用下面的第二个代码块替换https://github.com/mattupstate/overholt中的可行示例。PyCharm警告我“db”导入未被使用,因此当我设置sqlalchemy_session时可能没有被正确地取消引用?
nosetests 1.3.7的使用情况(但FactoryBoy的set_creation_function现在已经废弃):
from myapp.core import db
def create_sqlalchemy_model_function(class_to_create, *args, **kwargs):
entity = class_to_create(**kwargs)
db.session.add(entity)
db.session.commit()
return entity
Factory.set_creation_function(create_sqlalchemy_model_function)
无法与nosetests 2.x一起工作(看起来数据库引用不正确?)
from factory.alchemy import SQLAlchemyModelFactory as Factory
from myapp.core import db
class Factory():
class Meta:
sqlalchemy_session = db.session
def _create(cls, model_class, *args, **kwargs):
entity = model_class(*args, **kwargs)
db.session.add(entity)
db.session.commit()
return entity