【发布时间】:2022-01-20 01:21:18
【问题描述】:
以下测试在本地通过,因为本地是 EST:
def test_get_local_ts(self):
dt = Utils.get_local_ts().strftime('%Y-%m-%d')
dt1 = datetime.now().strftime('%Y-%m-%d')
self.assertEqual(dt, dt1)
但在 Jenkins 管道中运行时失败。
因为 Jenkins 服务器在 UTC 时间运行,但是方法 get_local_ts 正在返回本地时间。
于是就发生了这个错误:
self.assertEqual(dt, dt1)
AssertionError: '2021-12-16' != '2021-12-17'
此外,只有在美国东部标准时间晚上 7 点之后运行它时才会失败,此时 UTC 会滚动到第二天。
我怎样才能让它随时在本地和 Jenkins 中通过?
谢谢!
【问题讨论】:
-
“Jenkins 服务器在 UTC 时间运行”和“get_local_ts 正在返回本地时间”是什么意思?您是否尝试过对 datetime.now() 使用 tz 参数以便处理时区感知对象?
标签: python unit-testing jenkins