《flask-web开发》一书中 12章测试 时间错乱的问题

发布于 2022-09-11 19:17:45 字数 1466 浏览 15 评论 0

问题描述

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文