- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
简单模型(models.py):
from django.db import models
class MyModel(models.Model):
start_date = models.DateField()
简单工厂(test_factories.py):
from datetime import date
import factory
from .models import MyModel
class MyModelFactory(factory.django.DjangoModelFactory):
class Meta:
model = MyModel
start_date = date.today()
在 manage.py shell
中:
In [1]: from datetime import date
In [2]: from freezegun import freeze_time
In [3]: from polls.test_factories import MyModelFactory
In [4]: date.today()
Out[4]: datetime.date(2017, 8, 16)
In [5]: with freeze_time(date(1999,9,9)):
...: print(date.today())
...: m = MyModelFactory()
...: print(m.start_date)
...:
1999-09-09
2017-08-16
当前日期是 2017-08-16,假日期是 1999-09-09。在 freeze_time
中,date.today()
提供假日期,但 factoryboy 不受 freezegun 的影响。它仍然提供真实的当前日期。
这是错误吗?如果是,请问 factoryboy 或 freezegun 有问题吗?
如何解决这个问题?换句话说,如何让 factoryboy 给假约会? (目前,我使用 MyModelFactory(start_date=date.today())
创建带有假日期的模型。)
冰枪版本:0.3.9
工厂男孩版本:2.8.1
最佳答案
问题是 date.today()
在 python 解析工厂声明时被评估;而 factory_boy 只接收结果日期实例。
这是 Python 核心行为的一部分 — 不能被 factory_boy 覆盖。
此问题的正确解决方案是使用 factory.LazyFunction
声明:
class MyModelFactory(factory.django.DjangoModelFactory):
class Meta:
model = MyModel
# Note that we simply pass a callable.
start_date = factory.LazyFunction(date.today)
您可能还想看看 factory.fuzzy.FuzzyDate
这将在给定的时间跨度内生成随机日期。
关于python - factoryboy 不使用 freezegun,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45718624/
我想将 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 的实例。如何使
我是一名优秀的程序员,十分优秀!