- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图在我的单元测试中使用 freezegun 来修补数据类中的一个字段,该字段设置为对象初始化时的当前日期。我想这个问题与任何尝试修补一个在 freezegun 之外用作 default_factory 的函数有关。数据类被卡住,因此它是不可变的。
例如,如果我的数据类是:
@dataclass(frozen=True)
class MyClass:
name: str
timestamp: datetime.datetime = field(init=False, default_factory=datetime.datetime.now)
@dataclass(frozen=True)
class MyClass:
name: str
timestamp: datetime.datetime = field(init=False)
def __post_init__(self):
object.__setattr__(self, "timestamp", datetime.datetime.now())
最佳答案
你是对的,数据类创建过程在这里做了一些奇怪的事情,这导致了你当前的问题。它在类创建期间绑定(bind)工厂函数,这意味着它在 freezegun 有机会修补它之前持有代码的引用。
这是一个没有遇到相同问题的数据类的示例:
from datetime import datetime
from freezegun import freeze_time
class Foo:
# looks up the function at class creation time
now_func = datetime.now
def __init__(self):
# asks datetime for a reference at instance creation time
self.timestamp_a = datetime.now()
# uses an old reference we couldn't patch
self.timestamp_b = Foo.now_func()
with freeze_time(datetime(2020, 1, 1)):
foo = Foo()
assert foo.timestamp_a == datetime(2020, 1, 1) # works
assert foo.timestamp_b == datetime(2020, 1, 1) # raises an AssertionError
MyClass.__init__.__closure__
在您的测试期间切换功能,但这有点疯狂。
timestamp
好一点的东西在
__post_init__
可能只是用 lambda 委托(delegate)函数调用,以便名称查找延迟到实例化时间:
timestamp: datetime = field(init=False, default_factory=lambda: datetime.now())
关于Python 数据类 : Mocking the default factory in a frozen Dataclass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61257658/
我正在尝试将数据插入 Cassandra(2.1.9)我的 Java 对象有一个 UDT 列表的映射。在运行代码时,我收到有关 @Frozen 注释的错误。我正在使用 DataStax(2.1.9)
Kendo UI 网格卡住列 CSS 类。 我有一个带有卡住行/列的 Kendo UI 网格,我添加了一些条件格式,但不幸的是,此条件格式没有添加到卡住行/列 HTML 脚本 $("#grid").
我收到了一份。在Spyder中第二次从子文件夹导入库时出错,但第一次(重新启动Spyder后)或在Spyder外导入时工作正常。。代码是:。其中,test_lib.py只是。输出结果为:。当库不在子文
这个问题在这里已经有了答案: How to freeze freezable objects that cannot be frozen (1 个回答) 关闭 1 年前。 我正在为我的 WPF 应用
React 建议不要改变 props。我的印象是,当传入 props 时,它们将是不可变的或卡住的。 下面的代码不会抛出任何错误并改变 prop。这是一个错误吗? try{ var a = thi
使用frozenflask使我的网站静态化,我遇到以下问题。 当我的所有页面正在构建时(file//c:/Correctpath/build/2014/page-title/index.html),链
我遇到一个问题,AutoFixture 似乎正在覆盖卡住模拟上的属性。模拟类的属性是只读的,根据我的阅读,AutoFixture 不应该尝试对它做任何事情。 我在下面的 LINQPad 中包含了重现该
我有一个特定的问题:我创建了一个快速答题器游戏,其中两个玩家试图比另一个玩家更快地点击。一个特殊的按钮卡住对手的主要按钮。卡住的按钮目前只是变得不可点击,文字颜色变成灰色。 要添加一些“样式”,我想从
我有一个卡住的 div(使用 css position: fixed; 属性卡住)用作网站的标题。在 div 之后(或在 div 之下)是网页的正文或其余部分。 通知栏会淡入淡出 jQuery ($
有没有人见过这个错误?应用程序在打开时立即崩溃,因为它无法启动默认 Activity 。 Failure starting process com.xyz
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 13 年前。 Improve thi
Cassandra 中的frozen 关键字是什么意思? 我正在尝试阅读此文档页面:Using a user-defined type ,但他们对 frozen 关键字(他们在示例中使用的关键字)的解
卡住集是卡住集。 卡住列表可以是一个元组。 卡住的字典是什么?一个不可变的、可散列的字典。 我猜它可能类似于 collections.namedtuple,但这更像是一个 freeze-keys di
我有一个 Java 类,它使用 datastax cassandra 驱动程序将 pojo 写入 cassandra 表。一切工作正常,直到必须将类对象写入 cassandra 表。它抛出此错误: 原
您知道当您有一个卡住的窗口时,但是当您将另一个窗口拖到顶部时它会留下痕迹吗?有时它看起来有点像 Windows 3 纸牌的结尾 :) 当你完成时(就像我的截图)。 我想制作一个 C# windows
我正在使用Flask创建一个网站我想使用 Frozen-Flask 卡住,而且还可以让网站上线。 我关注了the documentation仅在卡住网站时将 FREEZER_RELATIVE_URLS
我的网格目前有 40 行。一次只能显示 20 行,因此网格有滚动条。 我想卡住 DataGridView 的最后一行,但随后滚动条消失了。如何解决? 最佳答案 您正在使用 DataGridviewRo
我使用 Object.freeze 来防止自己违反自己的规则。当我试图做一个错误的分配时,我希望 Object.freeze 跟我说话。然而,Object.freeze 只是让赋值失败!例如,如果我这
我有以下数据库结构: fullsize 发票表是我的麻烦所在。场景:第 1 个月:用户购买产品、制作和参加事件以及付款。这些被保存到数据库中。我想在本月的最后一天为每个用户开具账单/发票。此发票已创建
Order模型: class Order true before_create :price def price mrr = Warehouse.where(:product =>
我是一名优秀的程序员,十分优秀!