- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我们的 django 应用程序构建大量测试,我正在使用 FactoryBoy
Profile
模型有一个gender
字段,定义如下:
class Profile(models.Model):
GENDER_CHOICES = (
(u'm', _(u'Male')),
(u'f', _(u'Female')),
)
gender = models.CharField(
max_length=2, choices=GENDER_CHOICES, verbose_name=_("Gender"),
null=True, blank=True
)
我想用下面这行代码在 factory boy 中随机化这个字段的值:
class ProfileFactory(factory.Factory):
(...)
gender = factory.LazyFunction(random.choice(['f', 'm']))
但是,这会抛出一个 TypeError: 'str' object is not callable
错误然后我使用旧的博客文章尝试了以下有效的解决方案:
gender = factory.LazyAttribute(lambda x: random.choice(['f', 'm']))
这解决了问题,但我不清楚为什么会这样。
documentation对于 factory.LazyFunction
声明:
The LazyFunction is the simplest case where the value of an attribute
does not depend on the object being built.
It takes as argument a method to call (function, lambda…); that method
should not take any argument, though keyword arguments are safe but
unused, and return a value.
据我了解,random.choice(['f', 'm'])
构成了一个方法调用,因此应该按我的预期工作。
但我对 LazyFunction
的理解显然有缺陷,我希望有人能解释我在这里做错了什么
最佳答案
两者的区别在于
lambda x: random.choice(['f', 'm'])
返回一个函数并
random.choice(['f', 'm'])
评估语句并返回字符串。
如果您要在没有 lambda 的情况下复制行为,您可以使用
def foo():
return random.choice(['f', 'm'])
# ...
gender = factory.LazyFunction(foo)
关于python - Django FactoryBoy - 随机选择不适用于 LazyFunction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55126058/
我想将 FactoryBoy 与用户/配置文件模式一起使用,如其文档中所述。 class ProfileFactory(DjangoModelFactory): class Meta:
我正在开发一个 Django 项目,我已为其创建了以下工厂: class PurchaseFactory(factory.DjangoModelFactory): class Meta:
假设我有这个模型: class FooContainerModel(object): def __init__(self, foos): self.foos = foos 我希
简单模型(models.py): from django.db import models class MyModel(models.Model): start_date = models.D
我正在为一个大型 Django 应用程序编写测试,作为这个过程的一部分,我正在逐渐为 Django 项目中不同应用程序的所有模型创建工厂。 但是,我在 FactoryBoy 中遇到了一些令人困惑的行为
我正在为我们的 django 应用程序构建大量测试,我正在使用 FactoryBoy Profile 模型有一个gender 字段,定义如下: class Profile(models.Model):
我使用 pytest 作为框架来测试我的应用程序,我也想使用 pytest factoryboy。到目前为止,我的 conftest.py 看起来很像这个例子: import factory from
我正在为具有多个应用程序的大型 Django 应用程序编写测试。作为这个过程的一部分,我逐渐为 Django 项目中不同应用程序的所有模型创建工厂。 但是,我在使用 FactoryBoy 时遇到了一些
我正在使用 factoryboy 来模拟如下所示的模型,我想知道是否有一种更简洁的方法不需要复制所有字段。 class ShippingContainer(models.Model): wei
我有一组工厂,我在测试阶段通过一个名为 Create 的便捷函数运行这些工厂。当我需要引用现有项目时,我将其作为参数传递,如果没有,我会使用 FactoryBoy 创建一个新项目: def Creat
出于测试目的,我正在尝试通过 factory_boy 覆盖自定义 Django 模型属性。但它似乎只是采用了模型的默认行为。工厂男孩不能更改自定义属性的默认行为吗? 这是我写的一个基本测试: 模型.p
在 FactoryBoy 中定义一个 ModelFactory 时,我需要访问由 SubFactory 创建的另一个模型的属性并将其分配给这个 ModelFactory 的属性。 这就是我想要做的:
可能是一个愚蠢的问题,但我已经用头撞墙有一段时间了。 我决定尝试 factory-boy 库来简化我的测试并定义了一个工厂: from . import models import factory c
我正在使用 Django并想使用 pytest 编写测试, pytest-django , pytest-factoryboy和 pytest-lazyfixtures . 我有使用多表继承的 Dja
我将 Django 3 与 Python 3.8 一起使用。我有以下型号... class Coop(models.Model): objects = CoopManager() na
我将 Flask 和 SQLAlchemy(通过 Flask-SQLAlchemy 扩展)与 Factory_Boy 一起使用. 我的 GearItem 模型有一个指向 GearCategory 的外
我刚开始使用factory boy与 Django 。它有一个设置 FACTORY_DJANGO_GET_OR_CREATE这意味着如果已经存在一个新对象,它将不会创建一个新对象。但是当我要求一个现有
我正在一家模型工厂工作,我正在尝试填写一个包含选项列表的字段。当我试图用工厂创建一个对象时,我试图从选择列表中随机填充一个选择,抛出一个异常: TypeError: 'choice' is an in
主题。 现在(Factory Boy 版本 2.4.1.)使用此代码: class ImageFactory(factory.django.DjangoModelFactory): class
我正在将 Django 应用程序的单元测试迁移到 py.test,但在单元测试中,他们使用 factory-boy 创建 django.contrib.auth.models.User 的实例。如何使
我是一名优秀的程序员,十分优秀!