问题标签 [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.

0 投票
2 回答
714 浏览

python - 如何使用 FactoryBoy 指定列表大小

假设我有这个模型:

我希望能够决定在创建时将创建多少个 foo,例如。

尝试过的工厂如

当然,我可以手动创建具有所需长度的 Foo() 列表并实例化 FooContainerModel,但这不是我想要的。有什么解决办法吗?

0 投票
1 回答
898 浏览

python - 使用工厂男孩 ImageFiled 导致缺少属性 _committed 错误

我正在尝试为需要django.db.models.ImageField. 我正在尝试factory.django.ImageField从工厂男孩那里使用,但得到错误AttributeError: 'ImageField' object has no attribute '_committed'

简化的 Django 对象:

工厂类:

测试中的用法:

这会给我以下错误,指向创建GalleryImageFactory.

我正在运行 python (2.7.6)、factory-boy (2.4.1) 和 Django (1.6.8)

完整的堆栈跟踪:

任何帮助表示赞赏,包括获取具有指定文件名的有效图像的其他方法的提示。提前致谢!

0 投票
1 回答
920 浏览

python - 为什么 SQLAlchemy 不将 FactoryBoy SubFactory 生成的这个对象翻译成外键?

我将 Flask 和 SQLAlchemy(通过 Flask-SQLAlchemy 扩展)与Factory_Boy一起使用。

我的GearItem模型有一个外键GearCategoryFactory_BoySubFactory通过创建在原始工厂中用作外键的对象的函数来处理这个问题。

这是我的模型定义:

这是我的 factory_boyFactory定义:

我可以毫无问题地调用GearItemFactory()它,它显然会生成一个和一个打算用作外键GearItem的父级。GearCategory

但是,当我调用 时db.session.flush(),SQLAlchemy 不会将创建的对象SubFactory转换为可用作外键的整数。相反,它尝试将对象本身传递给底层数据库驱动程序,然后它抱怨不知道如何处理类型的对象GearCategory

我得到的错误是sqlalchemy.exc.ProgrammingError: (db_driver) can't adapt type 'GearCategory' [SQL: 'INSERT INTO gear_item (...

我究竟做错了什么?

0 投票
1 回答
1060 浏览

django - 使用 py.test 为 django 用户使用 factoryboy

我正在将 Django 应用程序的 UnitTests 迁移到 py.test,但在 UnitTests 中,他们使用 factory-boy 创建 django.contrib.auth.models.User 的实例。pytest-factory-boy 如何做到这一点?

0 投票
1 回答
392 浏览

python - django factory boy test 给出 __str__ 返回的非字符串

我正在调整测试以使用工厂男孩实例而不是 models.objects.create(..)

它进展顺利,但现在我遇到了一个错误,我似乎无法找到源头。任何人都可以帮忙吗?

模型.py

工厂.py

测试.py

追溯:

0 投票
4 回答
1899 浏览

python - 使用带有 GeoDjango PointFields 的 Factory Boy

我正在为我开始的新 GeoDjango 项目编写测试。通常我使用Factory BoyFaker来创建模型实例进行测试。但是,我不清楚如何模拟 GeoDjango PointField 字段。在Spacialite中查看记录时,它显示为二进制 blob。

我对 GIS 的东西完全陌生,对如何在 Django 中为 PointFields 创建工厂有点困惑。

0 投票
2 回答
1936 浏览

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)吗?还是我需要查看数据库?

0 投票
2 回答
8436 浏览

python - 将使用 SubFactory 和 LazyAttribute 创建的对象传递给 factory_boy 中的 RelatedFactory

factory.LazyAttributeSubFactory调用中使用传入一个对象,该对象是在factory_parent. 这工作正常。

但是,如果我将创建的对象传递给 a RelatedFactoryLazyAttribute则无法再看到factory_parentand 失败。

这工作正常:

相同的调用在LazyAttribute这里失败:

相同的LazyAttribute调用不再能看到 factory_parent,只能访问AnotherObject值。LazyAttribute 抛出错误:

有办法解决这个问题吗?

我不能只将 sub_object=sub_object 放入 ObjectFactory 调用中,即:

因为如果我这样做:

创建了第二个 sub_object,而我需要两个对象都引用同一个 sub_object。我试过SelfAttribute无济于事。

0 投票
1 回答
276 浏览

python - 在不带“self”的 ~Factory 子类中调用 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从子类访问该父工厂方法?

0 投票
1 回答
762 浏览

python - Multiple inheritance of factory_boy factories - only seems to inherit the first parent

I am trying to inherit from two ~Factory factory_boy classes, but it seems only the first class is inherited from, and the second is ignored. (They do have a common parent.)

Is there any way I can inherit both?

This is a tall order, I know, but it would enable such a fantastically beautiful solution to a problem I've got, whereby I could create all my required combinations of test cases simply with multiple inheritance. (I recognise that it is probably not 'simple' to support in factory_boy.)