《flask-web开发》一书中 12章测试 时间错乱的问题
问题描述
flask web 开发一书中 关于Follow的章节的单元测试
测试案例如下
def test_follow(self):
timestamp_before = datetime.utcnow()
u1 = User(username="u1", password="cat")
u2 = User(username="u2", password="dog")
db.session.add_all([u1, u2])
db.session.commit()
self.assertFalse(u1.is_following(u2))
self.assertFalse(u2.is_followed_by(u1))
u1.follow(u2)
# db.session.add(u1)
db.session.commit()
timestamp_after = datetime.utcnow()
self.assertTrue(u1.is_following(u2))
self.assertTrue(u2.is_followed_by(u1))
self.assertFalse(u1.is_followed_by(u2))
self.assertTrue(u1.followed.count() == 1, msg="u1.followed.count() = {}".format(u1.followed.count()))
self.assertTrue(u2.followers.count() == 1)
f = u1.followed.all()[-1]
print(u1.followed.all())
self.assertTrue(f.followed == u2)
self.assertTrue(timestamp_before <= f.timestamp <= timestamp_after,
msg="before:{0},f:{1},after{2}".format(timestamp_before, f.timestamp, timestamp_after))
f.timestamp为f对象创建时default设置的utcnow()
根据代码 实现先后顺序应为timestamp_before <= f.timestamp <= timestamp_after,但最终的运行结果如下
AssertionError: False is not true : before:2019-04-20 16:35:07.943151,f:2019-04-20 16:35:07.106793,after2019-04-20 16:35:08.725704
百思不得其解,怎么f的创建时间能比进入这个函数的时间还早?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论